Index: net/http/http_stream_factory_impl_job.cc |
diff --git a/net/http/http_stream_factory_impl_job.cc b/net/http/http_stream_factory_impl_job.cc |
index 408c75e718070fbcaf72ae9c5a4176c69703c39d..28532ddc038ea2c9f12901295a172258009c6e49 100644 |
--- a/net/http/http_stream_factory_impl_job.cc |
+++ b/net/http/http_stream_factory_impl_job.cc |
@@ -902,7 +902,6 @@ int HttpStreamFactoryImpl::Job::DoCreateStream() { |
if (!using_spdy_) { |
bool using_proxy = (proxy_info_.is_http() || proxy_info_.is_https()) && |
request_info_.url.SchemeIs("http"); |
- // TODO(simonjam): Support proxies. |
if (stream_factory_->http_pipelined_host_pool_. |
IsExistingPipelineAvailableForKey(*http_pipelining_key_.get())) { |
stream_.reset(stream_factory_->http_pipelined_host_pool_. |
@@ -910,6 +909,7 @@ int HttpStreamFactoryImpl::Job::DoCreateStream() { |
*http_pipelining_key_.get())); |
CHECK(stream_.get()); |
} else if (!using_proxy && IsRequestEligibleForPipelining()) { |
+ // TODO(simonjam): Support proxies. |
stream_.reset( |
stream_factory_->http_pipelined_host_pool_.CreateStreamOnNewPipeline( |
*http_pipelining_key_.get(), |
@@ -1246,6 +1246,12 @@ bool HttpStreamFactoryImpl::Job::IsRequestEligibleForPipelining() { |
if (request_info_.method != "GET" && request_info_.method != "HEAD") { |
return false; |
} |
+ if (request_info_.load_flags & |
+ (net::LOAD_MAIN_FRAME | net::LOAD_SUB_FRAME | net::LOAD_PREFETCH | |
+ net::LOAD_IS_DOWNLOAD)) { |
+ // Avoid pipelining resources that may be streamed for a long time. |
+ return false; |
+ } |
return stream_factory_->http_pipelined_host_pool_.IsKeyEligibleForPipelining( |
*http_pipelining_key_.get()); |
} |