summaryrefslogtreecommitdiffstats
path: root/net/http/http_stream_factory_impl_job.cc
diff options
context:
space:
mode:
authorrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-09 02:01:54 +0000
committerrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-09 02:01:54 +0000
commitdb96a88617afc0e619c06234bd4f4670ccfe1ae3 (patch)
treed31503fd03c1726882c8ce9eb1fc3338cf966809 /net/http/http_stream_factory_impl_job.cc
parentb7333cbad3132c305a3c0032d16b5655bef5fc8b (diff)
downloadchromium_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.cc18
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;
}