summaryrefslogtreecommitdiffstats
path: root/net/socket
diff options
context:
space:
mode:
authorerikchen@google.com <erikchen@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-23 23:09:15 +0000
committererikchen@google.com <erikchen@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-23 23:09:15 +0000
commit9e9e842e287f9f949aa59bcf88321fa7f94fd524 (patch)
treeb84963a14d5c7a4a7908d268320d29bb40b726b2 /net/socket
parent148971b8a6efa47182662a17c8e7b455043fb632 (diff)
downloadchromium_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.cc17
-rw-r--r--net/socket/ssl_client_socket_pool.h9
-rw-r--r--net/socket/ssl_client_socket_pool_unittest.cc42
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;