diff options
author | erikchen@google.com <erikchen@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-23 23:09:15 +0000 |
---|---|---|
committer | erikchen@google.com <erikchen@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-23 23:09:15 +0000 |
commit | 9e9e842e287f9f949aa59bcf88321fa7f94fd524 (patch) | |
tree | b84963a14d5c7a4a7908d268320d29bb40b726b2 /net/socket | |
parent | 148971b8a6efa47182662a17c8e7b455043fb632 (diff) | |
download | chromium_src-9e9e842e287f9f949aa59bcf88321fa7f94fd524.zip chromium_src-9e9e842e287f9f949aa59bcf88321fa7f94fd524.tar.gz chromium_src-9e9e842e287f9f949aa59bcf88321fa7f94fd524.tar.bz2 |
SPDY now always uses http_network_transaction instead of spdy_network_transaction.
It was previously possible to use spdy_network_transaction using the command line flags:
--use-spdy=no-ssl
--use-spdy=no-compress
This does not affect instances of chrome that are not run with --use-spdy.
Also changed spdy_network_transaction_unittest so that all tests are run with 3 different connection configurations: spdy over npn, spdy over ssl, and spdy without ssl.
TEST=net_unittests
BUG=49082
Review URL: http://codereview.chromium.org/3048003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53548 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket')
-rw-r--r-- | net/socket/ssl_client_socket_pool.cc | 17 | ||||
-rw-r--r-- | net/socket/ssl_client_socket_pool.h | 9 | ||||
-rw-r--r-- | net/socket/ssl_client_socket_pool_unittest.cc | 42 |
3 files changed, 42 insertions, 26 deletions
diff --git a/net/socket/ssl_client_socket_pool.cc b/net/socket/ssl_client_socket_pool.cc index 3fd960c..f13c1cf 100644 --- a/net/socket/ssl_client_socket_pool.cc +++ b/net/socket/ssl_client_socket_pool.cc @@ -18,7 +18,8 @@ SSLSocketParams::SSLSocketParams( const std::string& hostname, const SSLConfig& ssl_config, int load_flags, - bool want_spdy) + bool force_spdy_over_ssl, + bool want_spdy_over_npn) : tcp_params_(tcp_params), http_proxy_params_(http_proxy_params), socks_params_(socks_params), @@ -26,7 +27,8 @@ SSLSocketParams::SSLSocketParams( hostname_(hostname), ssl_config_(ssl_config), load_flags_(load_flags), - want_spdy_(want_spdy) { + force_spdy_over_ssl_(force_spdy_over_ssl), + want_spdy_over_npn_(want_spdy_over_npn) { switch (proxy_) { case ProxyServer::SCHEME_DIRECT: DCHECK(tcp_params_.get() != NULL); @@ -281,17 +283,22 @@ int SSLConnectJob::DoSSLConnectComplete(int result) { if (result == OK || IsCertificateError(result)) status = ssl_socket_->GetNextProto(&proto); - bool using_spdy = false; + // If we want spdy over npn, make sure it succeeded. + bool spdy_over_npn_succeeded = false; if (status == SSLClientSocket::kNextProtoNegotiated) { ssl_socket_->setWasNpnNegotiated(true); if (SSLClientSocket::NextProtoFromString(proto) == SSLClientSocket::kProtoSPDY1) { - using_spdy = true; + spdy_over_npn_succeeded = true; } } - if (params_->want_spdy() && !using_spdy) + if (params_->want_spdy_over_npn() && !spdy_over_npn_succeeded) return ERR_NPN_NEGOTIATION_FAILED; + // Spdy might be turned on by default, or it might be over npn. + bool using_spdy = params_->force_spdy_over_ssl() || + params_->want_spdy_over_npn(); + if (result == OK || ssl_socket_->IgnoreCertError(result, params_->load_flags())) { DCHECK(ssl_connect_start_time_ != base::TimeTicks()); diff --git a/net/socket/ssl_client_socket_pool.h b/net/socket/ssl_client_socket_pool.h index fd5bbb3..7a33b62 100644 --- a/net/socket/ssl_client_socket_pool.h +++ b/net/socket/ssl_client_socket_pool.h @@ -39,7 +39,8 @@ class SSLSocketParams : public base::RefCounted<SSLSocketParams> { const std::string& hostname, const SSLConfig& ssl_config, int load_flags, - bool want_spdy); + bool force_spdy_over_ssl, + bool want_spdy_over_npn); const scoped_refptr<TCPSocketParams>& tcp_params() { return tcp_params_; } const scoped_refptr<HttpProxySocketParams>& http_proxy_params () { @@ -52,7 +53,8 @@ class SSLSocketParams : public base::RefCounted<SSLSocketParams> { const std::string& hostname() const { return hostname_; } const SSLConfig& ssl_config() const { return ssl_config_; } int load_flags() const { return load_flags_; } - bool want_spdy() const { return want_spdy_; } + bool force_spdy_over_ssl() const { return force_spdy_over_ssl_; } + bool want_spdy_over_npn() const { return want_spdy_over_npn_; } private: friend class base::RefCounted<SSLSocketParams>; @@ -65,7 +67,8 @@ class SSLSocketParams : public base::RefCounted<SSLSocketParams> { const std::string hostname_; const SSLConfig ssl_config_; const int load_flags_; - const bool want_spdy_; + const bool force_spdy_over_ssl_; + const bool want_spdy_over_npn_; DISALLOW_COPY_AND_ASSIGN(SSLSocketParams); }; diff --git a/net/socket/ssl_client_socket_pool_unittest.cc b/net/socket/ssl_client_socket_pool_unittest.cc index 972f7d8..64cae4c 100644 --- a/net/socket/ssl_client_socket_pool_unittest.cc +++ b/net/socket/ssl_client_socket_pool_unittest.cc @@ -76,7 +76,7 @@ class SSLClientSocketPoolTest : public ClientSocketPoolTest { scoped_refptr<SSLSocketParams> SSLParams( ProxyServer::Scheme proxy, struct MockHttpAuthControllerData* auth_data, - size_t auth_data_len, bool want_spdy) { + size_t auth_data_len, bool want_spdy_over_ssl, bool want_spdy_over_npn) { scoped_refptr<HttpProxySocketParams> http_proxy_params; if (proxy == ProxyServer::SCHEME_HTTP) { @@ -97,7 +97,8 @@ class SSLClientSocketPoolTest : public ClientSocketPoolTest { "host", ssl_config_, 0, - want_spdy)); + want_spdy_over_ssl, + want_spdy_over_npn)); } MockClientSocketFactory socket_factory_; @@ -123,7 +124,7 @@ TEST_F(SSLClientSocketPoolTest, TCPFail) { CreatePool(true /* tcp pool */, false, false); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; int rv = handle.Init("a", params, MEDIUM, NULL, pool_, BoundNetLog()); @@ -140,7 +141,7 @@ TEST_F(SSLClientSocketPoolTest, TCPFailAsync) { CreatePool(true /* tcp pool */, false, false); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -164,7 +165,7 @@ TEST_F(SSLClientSocketPoolTest, BasicDirect) { CreatePool(true /* tcp pool */, false, false); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -182,7 +183,7 @@ TEST_F(SSLClientSocketPoolTest, BasicDirectAsync) { CreatePool(true /* tcp pool */, false, false); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -204,7 +205,7 @@ TEST_F(SSLClientSocketPoolTest, DirectCertError) { CreatePool(true /* tcp pool */, false, false); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -226,7 +227,7 @@ TEST_F(SSLClientSocketPoolTest, DirectSSLError) { CreatePool(true /* tcp pool */, false, false); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -251,7 +252,7 @@ TEST_F(SSLClientSocketPoolTest, DirectWithNPN) { CreatePool(true /* tcp pool */, false, false); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -277,7 +278,7 @@ TEST_F(SSLClientSocketPoolTest, DirectNoSPDY) { CreatePool(true /* tcp pool */, false, false); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, - NULL, 0, true); + NULL, 0, false, true); ClientSocketHandle handle; TestCompletionCallback callback; @@ -302,7 +303,7 @@ TEST_F(SSLClientSocketPoolTest, DirectGotSPDY) { CreatePool(true /* tcp pool */, false, false); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, - NULL, 0, true); + NULL, 0, false, true); ClientSocketHandle handle; TestCompletionCallback callback; @@ -333,7 +334,7 @@ TEST_F(SSLClientSocketPoolTest, DirectGotBonusSPDY) { CreatePool(true /* tcp pool */, false, false); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, - NULL, 0, false); + NULL, 0, false, true); ClientSocketHandle handle; TestCompletionCallback callback; @@ -361,7 +362,7 @@ TEST_F(SSLClientSocketPoolTest, SOCKSFail) { CreatePool(false, true /* http proxy pool */, true /* socks pool */); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -379,7 +380,7 @@ TEST_F(SSLClientSocketPoolTest, SOCKSFailAsync) { CreatePool(false, true /* http proxy pool */, true /* socks pool */); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -403,7 +404,7 @@ TEST_F(SSLClientSocketPoolTest, SOCKSBasic) { CreatePool(false, true /* http proxy pool */, true /* socks pool */); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -421,7 +422,7 @@ TEST_F(SSLClientSocketPoolTest, SOCKSBasicAsync) { CreatePool(false, true /* http proxy pool */, true /* socks pool */); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -442,7 +443,7 @@ TEST_F(SSLClientSocketPoolTest, HttpProxyFail) { CreatePool(false, true /* http proxy pool */, true /* socks pool */); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -460,7 +461,7 @@ TEST_F(SSLClientSocketPoolTest, HttpProxyFailAsync) { CreatePool(false, true /* http proxy pool */, true /* socks pool */); scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, - NULL, 0, false); + NULL, 0, false, false); ClientSocketHandle handle; TestCompletionCallback callback; @@ -500,6 +501,7 @@ TEST_F(SSLClientSocketPoolTest, HttpProxyBasic) { scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, auth_data, arraysize(auth_data), + false, false); ClientSocketHandle handle; @@ -533,6 +535,7 @@ TEST_F(SSLClientSocketPoolTest, HttpProxyBasicAsync) { scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, auth_data, arraysize(auth_data), + false, false); ClientSocketHandle handle; @@ -572,6 +575,7 @@ TEST_F(SSLClientSocketPoolTest, NeedProxyAuth) { scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, auth_data, arraysize(auth_data), + false, false); ClientSocketHandle handle; @@ -620,6 +624,7 @@ TEST_F(SSLClientSocketPoolTest, DoProxyAuth) { scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, auth_data, arraysize(auth_data), + false, false); ClientSocketHandle handle; @@ -688,6 +693,7 @@ TEST_F(SSLClientSocketPoolTest, DoProxyAuthNoKeepAlive) { scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, auth_data, arraysize(auth_data), + false, false); ClientSocketHandle handle; |