diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-09 02:01:54 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-09 02:01:54 +0000 |
commit | db96a88617afc0e619c06234bd4f4670ccfe1ae3 (patch) | |
tree | d31503fd03c1726882c8ce9eb1fc3338cf966809 /net/http/http_stream_factory_impl_job.cc | |
parent | b7333cbad3132c305a3c0032d16b5655bef5fc8b (diff) | |
download | chromium_src-db96a88617afc0e619c06234bd4f4670ccfe1ae3.zip chromium_src-db96a88617afc0e619c06234bd4f4670ccfe1ae3.tar.gz chromium_src-db96a88617afc0e619c06234bd4f4670ccfe1ae3.tar.bz2 |
Introduce net::HttpServerPropertiesManager to manage server-specific properties.
Currently the only property we manage is whether or not a server supports SPDY, as indicated by NPN. Also introduce a chrome/ implementation of HttpServerPropertiesManager that persists the information to Prefererences.
When we get a SpdySession for a SPDY server, record that that server supports SPDY in HttpServerPropertiesManager. When preconnecting, if we know that the server supports SPDY, only preconnect 1 socket.
R=willchan
BUG=66472
TEST=browser ui and unit tests,network unit tests
Review URL: http://codereview.chromium.org/7827033
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104666 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_stream_factory_impl_job.cc')
-rw-r--r-- | net/http/http_stream_factory_impl_job.cc | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/net/http/http_stream_factory_impl_job.cc b/net/http/http_stream_factory_impl_job.cc index b55d1ac..f496042 100644 --- a/net/http/http_stream_factory_impl_job.cc +++ b/net/http/http_stream_factory_impl_job.cc @@ -19,6 +19,7 @@ #include "net/http/http_proxy_client_socket.h" #include "net/http/http_proxy_client_socket_pool.h" #include "net/http/http_request_info.h" +#include "net/http/http_server_properties.h" #include "net/http/http_stream_factory_impl_request.h" #include "net/socket/client_socket_handle.h" #include "net/socket/client_socket_pool.h" @@ -119,7 +120,17 @@ void HttpStreamFactoryImpl::Job::Start(Request* request) { int HttpStreamFactoryImpl::Job::Preconnect(int num_streams) { DCHECK_GT(num_streams, 0); - num_streams_ = num_streams; + HostPortPair origin_server = + HostPortPair(request_info_.url.HostNoBrackets(), + request_info_.url.EffectiveIntPort()); + HttpServerProperties* http_server_properties = + session_->http_server_properties(); + if (http_server_properties && + http_server_properties->SupportsSpdy(origin_server)) { + num_streams_ = 1; + } else { + num_streams_ = num_streams; + } return StartInternal(); } @@ -821,6 +832,11 @@ int HttpStreamFactoryImpl::Job::DoCreateStream() { &new_spdy_session_, using_ssl_); if (error != OK) return error; + const HostPortPair& host_port_pair = pair.first; + HttpServerProperties* http_server_properties = + session_->http_server_properties(); + if (http_server_properties) + http_server_properties->SetSupportsSpdy(host_port_pair, true); spdy_session_direct_ = direct; return OK; } |