| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/http/http_stream_factory_impl_job.h" | 5 #include "net/http/http_stream_factory_impl_job.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 } | 125 } |
| 126 | 126 |
| 127 void HttpStreamFactoryImpl::Job::Start(Request* request) { | 127 void HttpStreamFactoryImpl::Job::Start(Request* request) { |
| 128 DCHECK(request); | 128 DCHECK(request); |
| 129 request_ = request; | 129 request_ = request; |
| 130 StartInternal(); | 130 StartInternal(); |
| 131 } | 131 } |
| 132 | 132 |
| 133 int HttpStreamFactoryImpl::Job::Preconnect(int num_streams) { | 133 int HttpStreamFactoryImpl::Job::Preconnect(int num_streams) { |
| 134 DCHECK_GT(num_streams, 0); | 134 DCHECK_GT(num_streams, 0); |
| 135 HostPortPair origin_server = | |
| 136 HostPortPair(request_info_.url.HostNoBrackets(), | |
| 137 request_info_.url.EffectiveIntPort()); | |
| 138 base::WeakPtr<HttpServerProperties> http_server_properties = | 135 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 139 session_->http_server_properties(); | 136 session_->http_server_properties(); |
| 140 if (http_server_properties && | 137 if (http_server_properties && http_server_properties->SupportsSpdy( |
| 141 http_server_properties->SupportsSpdy(origin_server)) { | 138 HostPortPair::FromURL(request_info_.url))) { |
| 142 num_streams_ = 1; | 139 num_streams_ = 1; |
| 143 } else { | 140 } else { |
| 144 num_streams_ = num_streams; | 141 num_streams_ = num_streams; |
| 145 } | 142 } |
| 146 return StartInternal(); | 143 return StartInternal(); |
| 147 } | 144 } |
| 148 | 145 |
| 149 int HttpStreamFactoryImpl::Job::RestartTunnelWithProxyAuth( | 146 int HttpStreamFactoryImpl::Job::RestartTunnelWithProxyAuth( |
| 150 const AuthCredentials& credentials) { | 147 const AuthCredentials& credentials) { |
| 151 DCHECK(establishing_tunnel_); | 148 DCHECK(establishing_tunnel_); |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 610 | 607 |
| 611 int HttpStreamFactoryImpl::Job::StartInternal() { | 608 int HttpStreamFactoryImpl::Job::StartInternal() { |
| 612 CHECK_EQ(STATE_NONE, next_state_); | 609 CHECK_EQ(STATE_NONE, next_state_); |
| 613 next_state_ = STATE_START; | 610 next_state_ = STATE_START; |
| 614 int rv = RunLoop(OK); | 611 int rv = RunLoop(OK); |
| 615 DCHECK_EQ(ERR_IO_PENDING, rv); | 612 DCHECK_EQ(ERR_IO_PENDING, rv); |
| 616 return rv; | 613 return rv; |
| 617 } | 614 } |
| 618 | 615 |
| 619 int HttpStreamFactoryImpl::Job::DoStart() { | 616 int HttpStreamFactoryImpl::Job::DoStart() { |
| 620 int port = request_info_.url.EffectiveIntPort(); | 617 origin_ = HostPortPair::FromURL(request_info_.url); |
| 621 origin_ = HostPortPair(request_info_.url.HostNoBrackets(), port); | |
| 622 origin_url_ = stream_factory_->ApplyHostMappingRules( | 618 origin_url_ = stream_factory_->ApplyHostMappingRules( |
| 623 request_info_.url, &origin_); | 619 request_info_.url, &origin_); |
| 624 | 620 |
| 625 net_log_.BeginEvent(NetLog::TYPE_HTTP_STREAM_JOB, | 621 net_log_.BeginEvent(NetLog::TYPE_HTTP_STREAM_JOB, |
| 626 base::Bind(&NetLogHttpStreamJobCallback, | 622 base::Bind(&NetLogHttpStreamJobCallback, |
| 627 &request_info_.url, &origin_url_, | 623 &request_info_.url, &origin_url_, |
| 628 priority_)); | 624 priority_)); |
| 629 | 625 |
| 630 // Don't connect to restricted ports. | 626 // Don't connect to restricted ports. |
| 631 bool is_port_allowed = IsPortAllowedByDefault(port); | 627 bool is_port_allowed = IsPortAllowedByDefault(origin_.port()); |
| 632 if (request_info_.url.SchemeIs("ftp")) { | 628 if (request_info_.url.SchemeIs("ftp")) { |
| 633 // Never share connection with other jobs for FTP requests. | 629 // Never share connection with other jobs for FTP requests. |
| 634 DCHECK(!waiting_job_); | 630 DCHECK(!waiting_job_); |
| 635 | 631 |
| 636 is_port_allowed = IsPortAllowedByFtp(port); | 632 is_port_allowed = IsPortAllowedByFtp(origin_.port()); |
| 637 } | 633 } |
| 638 if (!is_port_allowed && !IsPortAllowedByOverride(port)) { | 634 if (!is_port_allowed && !IsPortAllowedByOverride(origin_.port())) { |
| 639 if (waiting_job_) { | 635 if (waiting_job_) { |
| 640 waiting_job_->Resume(this); | 636 waiting_job_->Resume(this); |
| 641 waiting_job_ = NULL; | 637 waiting_job_ = NULL; |
| 642 } | 638 } |
| 643 return ERR_UNSAFE_PORT; | 639 return ERR_UNSAFE_PORT; |
| 644 } | 640 } |
| 645 | 641 |
| 646 next_state_ = STATE_RESOLVE_PROXY; | 642 next_state_ = STATE_RESOLVE_PROXY; |
| 647 return OK; | 643 return OK; |
| 648 } | 644 } |
| (...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1467 | 1463 |
| 1468 if (job_status_ == STATUS_SUCCEEDED && other_job_status_ == STATUS_BROKEN) { | 1464 if (job_status_ == STATUS_SUCCEEDED && other_job_status_ == STATUS_BROKEN) { |
| 1469 HistogramBrokenAlternateProtocolLocation( | 1465 HistogramBrokenAlternateProtocolLocation( |
| 1470 BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_STREAM_FACTORY_IMPL_JOB_MAIN); | 1466 BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_STREAM_FACTORY_IMPL_JOB_MAIN); |
| 1471 session_->http_server_properties()->SetBrokenAlternateProtocol( | 1467 session_->http_server_properties()->SetBrokenAlternateProtocol( |
| 1472 HostPortPair::FromURL(request_info_.url)); | 1468 HostPortPair::FromURL(request_info_.url)); |
| 1473 } | 1469 } |
| 1474 } | 1470 } |
| 1475 | 1471 |
| 1476 } // namespace net | 1472 } // namespace net |
| OLD | NEW |