diff options
Diffstat (limited to 'net/http/http_stream_request.cc')
-rw-r--r-- | net/http/http_stream_request.cc | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/net/http/http_stream_request.cc b/net/http/http_stream_request.cc index 8f4c9b1..242f899 100644 --- a/net/http/http_stream_request.cc +++ b/net/http/http_stream_request.cc @@ -451,6 +451,29 @@ int HttpStreamRequest::DoResolveProxyComplete(int result) { return OK; } +bool HasSpdyExclusion(const HostPortPair& endpoint) { + std::list<HostPortPair>* exclusions = + HttpStreamFactory::forced_spdy_exclusions(); + if (!exclusions) + return false; + + std::list<HostPortPair>::const_iterator it; + for (it = exclusions->begin(); it != exclusions->end(); it++) + if (it->Equals(endpoint)) + return true; + return false; +} + +bool HttpStreamRequest::ShouldForceSpdySSL() { + bool rv = force_spdy_always_ && force_spdy_over_ssl_; + return rv && !HasSpdyExclusion(endpoint_); +} + +bool HttpStreamRequest::ShouldForceSpdyWithoutSSL() { + bool rv = force_spdy_always_ && !force_spdy_over_ssl_; + return rv && !HasSpdyExclusion(endpoint_); +} + int HttpStreamRequest::DoInitConnection() { DCHECK(!connection_->is_initialized()); DCHECK(proxy_info()->proxy_server().is_valid()); @@ -460,8 +483,7 @@ int HttpStreamRequest::DoInitConnection() { alternate_protocol_mode_ == kUsingAlternateProtocol && alternate_protocol_ == HttpAlternateProtocols::NPN_SPDY_2; using_ssl_ = request_info().url.SchemeIs("https") || - (force_spdy_always_ && force_spdy_over_ssl_) || - want_spdy_over_npn; + ShouldForceSpdySSL() || want_spdy_over_npn; using_spdy_ = false; // If spdy has been turned off on-the-fly, then there may be SpdySessions @@ -677,7 +699,7 @@ int HttpStreamRequest::DoInitConnectionComplete(int result) { if (ssl_socket->was_spdy_negotiated()) SwitchToSpdyMode(); } - if (force_spdy_over_ssl_ && force_spdy_always_) + if (ShouldForceSpdySSL()) SwitchToSpdyMode(); } else if (proxy_info()->is_https() && connection_->socket() && result == OK) { @@ -690,7 +712,7 @@ int HttpStreamRequest::DoInitConnectionComplete(int result) { } // We may be using spdy without SSL - if (!force_spdy_over_ssl_ && force_spdy_always_) + if (ShouldForceSpdyWithoutSSL()) SwitchToSpdyMode(); if (result == ERR_PROXY_AUTH_REQUESTED || @@ -913,7 +935,7 @@ scoped_refptr<SSLSocketParams> HttpStreamRequest::GenerateSSLParams( new SSLSocketParams(tcp_params, socks_params, http_proxy_params, proxy_scheme, host_and_port, *ssl_config(), load_flags, - force_spdy_always_ && force_spdy_over_ssl_, + ShouldForceSpdySSL(), want_spdy_over_npn)); return ssl_params; |