summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authoryhirano@chromium.org <yhirano@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-26 06:04:25 +0000
committeryhirano@chromium.org <yhirano@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-26 06:04:25 +0000
commitcb50a3d14483ff939b4aeaabbddb99ef6db12599 (patch)
treefa1ab99379cbb68a3d5f30cbd982bc5e9da95bbc /net
parent6bfc220cd4df1577ebae83bf421134222d80b7bf (diff)
downloadchromium_src-cb50a3d14483ff939b4aeaabbddb99ef6db12599.zip
chromium_src-cb50a3d14483ff939b4aeaabbddb99ef6db12599.tar.gz
chromium_src-cb50a3d14483ff939b4aeaabbddb99ef6db12599.tar.bz2
Use the appropriate socket pool on socket connection.
WebSocket connections should use WEBSOCKET_SOCKET_POOL socket pools. InitSocketHandleForWebSocketRequest now uses WEBSOCKET_SOCKET_POOL socket pools. Other InitSocketHandle* functions are unchanged. BUG=118268 R=mmenke TEST=net_unittests Review URL: https://chromiumcodereview.appspot.com/17568008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@208643 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/http/http_stream_factory_impl_unittest.cc70
-rw-r--r--net/socket/client_socket_pool_manager.cc32
-rw-r--r--net/socket/client_socket_pool_manager.h1
3 files changed, 75 insertions, 28 deletions
diff --git a/net/http/http_stream_factory_impl_unittest.cc b/net/http/http_stream_factory_impl_unittest.cc
index 210e940..1e9a714 100644
--- a/net/http/http_stream_factory_impl_unittest.cc
+++ b/net/http/http_stream_factory_impl_unittest.cc
@@ -44,7 +44,7 @@ namespace {
class UseAlternateProtocolsScopedSetter {
public:
- UseAlternateProtocolsScopedSetter(bool use_alternate_protocols)
+ explicit UseAlternateProtocolsScopedSetter(bool use_alternate_protocols)
: use_alternate_protocols_(HttpStreamFactory::use_alternate_protocols()) {
HttpStreamFactory::set_use_alternate_protocols(use_alternate_protocols);
}
@@ -767,6 +767,11 @@ TEST(HttpStreamFactoryTest, RequestHttpStream) {
session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool(
HttpNetworkSession::NORMAL_SOCKET_POOL)));
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
+ session->GetTransportSocketPool(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
+ EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
EXPECT_TRUE(waiter.used_proxy_info().is_direct());
}
@@ -808,6 +813,11 @@ TEST(HttpStreamFactoryTest, RequestHttpStreamOverSSL) {
session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
EXPECT_EQ(1, GetSocketPoolGroupCount(
session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
+ session->GetTransportSocketPool(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
+ EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
EXPECT_TRUE(waiter.used_proxy_info().is_direct());
}
@@ -852,6 +862,12 @@ TEST(HttpStreamFactoryTest, RequestHttpStreamOverProxy) {
EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy(
HttpNetworkSession::NORMAL_SOCKET_POOL,
HostPortPair("myproxy", 8888))));
+ EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL,
+ HostPortPair("myproxy", 8888))));
+ EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL,
+ HostPortPair("myproxy", 8888))));
EXPECT_FALSE(waiter.used_proxy_info().is_direct());
}
@@ -888,10 +904,15 @@ TEST(HttpStreamFactoryTest, RequestWebSocketBasicStream) {
ASSERT_TRUE(NULL != waiter.websocket_stream());
EXPECT_EQ(MockWebSocketStream::kStreamTypeBasic,
waiter.websocket_stream()->type());
- EXPECT_EQ(1, GetSocketPoolGroupCount(
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
EXPECT_EQ(0, GetSocketPoolGroupCount(
session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
+ EXPECT_EQ(1, GetSocketPoolGroupCount(
+ session->GetTransportSocketPool(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
+ session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
EXPECT_TRUE(waiter.used_proxy_info().is_direct());
}
@@ -932,10 +953,15 @@ TEST(HttpStreamFactoryTest, RequestWebSocketBasicStreamOverSSL) {
ASSERT_TRUE(NULL != waiter.websocket_stream());
EXPECT_EQ(MockWebSocketStream::kStreamTypeBasic,
waiter.websocket_stream()->type());
- EXPECT_EQ(1, GetSocketPoolGroupCount(
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
- EXPECT_EQ(1, GetSocketPoolGroupCount(
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
+ EXPECT_EQ(1, GetSocketPoolGroupCount(
+ session->GetTransportSocketPool(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
+ EXPECT_EQ(1, GetSocketPoolGroupCount(
+ session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
EXPECT_TRUE(waiter.used_proxy_info().is_direct());
}
@@ -974,15 +1000,22 @@ TEST(HttpStreamFactoryTest, RequestWebSocketBasicStreamOverProxy) {
EXPECT_EQ(MockWebSocketStream::kStreamTypeBasic,
waiter.websocket_stream()->type());
EXPECT_EQ(0, GetSocketPoolGroupCount(
- session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
+ session->GetTransportSocketPool(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
EXPECT_EQ(0, GetSocketPoolGroupCount(
- session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
- EXPECT_EQ(1, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy(
+ session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
+ EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy(
HttpNetworkSession::NORMAL_SOCKET_POOL,
HostPortPair("myproxy", 8888))));
EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy(
HttpNetworkSession::NORMAL_SOCKET_POOL,
HostPortPair("myproxy", 8888))));
+ EXPECT_EQ(1, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL,
+ HostPortPair("myproxy", 8888))));
+ EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL,
+ HostPortPair("myproxy", 8888))));
EXPECT_FALSE(waiter.used_proxy_info().is_direct());
}
@@ -1028,6 +1061,11 @@ TEST(HttpStreamFactoryTest, RequestSpdyHttpStream) {
session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
EXPECT_EQ(1, GetSocketPoolGroupCount(
session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
+ session->GetTransportSocketPool(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
+ session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
EXPECT_TRUE(waiter.used_proxy_info().is_direct());
}
@@ -1095,10 +1133,15 @@ TEST(HttpStreamFactoryTest, RequestWebSocketSpdyStream) {
static_cast<WebSocketSpdyStream*>(waiter1.websocket_stream())->
spdy_session());
- EXPECT_EQ(1, GetSocketPoolGroupCount(
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
- EXPECT_EQ(1, GetSocketPoolGroupCount(
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
+ EXPECT_EQ(1, GetSocketPoolGroupCount(
+ session->GetTransportSocketPool(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
+ EXPECT_EQ(1, GetSocketPoolGroupCount(
+ session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
EXPECT_TRUE(waiter1.used_proxy_info().is_direct());
}
@@ -1156,10 +1199,15 @@ TEST(HttpStreamFactoryTest, OrphanedWebSocketStream) {
// Make sure that there was an alternative connection
// which consumes extra connections.
- EXPECT_EQ(2, GetSocketPoolGroupCount(
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
- EXPECT_EQ(1, GetSocketPoolGroupCount(
+ EXPECT_EQ(0, GetSocketPoolGroupCount(
session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
+ EXPECT_EQ(2, GetSocketPoolGroupCount(
+ session->GetTransportSocketPool(
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
+ EXPECT_EQ(1, GetSocketPoolGroupCount(
+ session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
EXPECT_TRUE(waiter.used_proxy_info().is_direct());
// Make sure there is no orphaned job. it is already canceled.
diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc
index c00b5ec..9282901 100644
--- a/net/socket/client_socket_pool_manager.cc
+++ b/net/socket/client_socket_pool_manager.cc
@@ -81,6 +81,7 @@ int InitSocketPoolHelper(const GURL& request_url,
const BoundNetLog& net_log,
int num_preconnect_streams,
ClientSocketHandle* socket_handle,
+ HttpNetworkSession::SocketPoolType socket_pool_type,
const OnHostResolutionCallback& resolution_callback,
const CompletionCallback& callback) {
scoped_refptr<TransportSocketParams> tcp_params;
@@ -235,12 +236,10 @@ int InitSocketPoolHelper(const GURL& request_url,
SSLClientSocketPool* ssl_pool = NULL;
if (proxy_info.is_direct()) {
- ssl_pool = session->GetSSLSocketPool(
- HttpNetworkSession::NORMAL_SOCKET_POOL);
+ ssl_pool = session->GetSSLSocketPool(socket_pool_type);
} else {
- ssl_pool = session->GetSocketPoolForSSLWithProxy(
- HttpNetworkSession::NORMAL_SOCKET_POOL,
- *proxy_host_port);
+ ssl_pool = session->GetSocketPoolForSSLWithProxy(socket_pool_type,
+ *proxy_host_port);
}
if (num_preconnect_streams) {
@@ -258,9 +257,7 @@ int InitSocketPoolHelper(const GURL& request_url,
if (proxy_info.is_http() || proxy_info.is_https()) {
HttpProxyClientSocketPool* pool =
- session->GetSocketPoolForHTTPProxy(
- HttpNetworkSession::NORMAL_SOCKET_POOL,
- *proxy_host_port);
+ session->GetSocketPoolForHTTPProxy(socket_pool_type, *proxy_host_port);
if (num_preconnect_streams) {
RequestSocketsForPool(pool, connection_group, http_proxy_params,
num_preconnect_streams, net_log);
@@ -274,9 +271,7 @@ int InitSocketPoolHelper(const GURL& request_url,
if (proxy_info.is_socks()) {
SOCKSClientSocketPool* pool =
- session->GetSocketPoolForSOCKSProxy(
- HttpNetworkSession::NORMAL_SOCKET_POOL,
- *proxy_host_port);
+ session->GetSocketPoolForSOCKSProxy(socket_pool_type, *proxy_host_port);
if (num_preconnect_streams) {
RequestSocketsForPool(pool, connection_group, socks_params,
num_preconnect_streams, net_log);
@@ -291,7 +286,7 @@ int InitSocketPoolHelper(const GURL& request_url,
DCHECK(proxy_info.is_direct());
TransportClientSocketPool* pool =
- session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL);
+ session->GetTransportSocketPool(socket_pool_type);
if (num_preconnect_streams) {
RequestSocketsForPool(pool, connection_group, tcp_params,
num_preconnect_streams, net_log);
@@ -391,7 +386,8 @@ int InitSocketHandleForHttpRequest(
request_url, request_extra_headers, request_load_flags, request_priority,
session, proxy_info, force_spdy_over_ssl, want_spdy_over_npn,
ssl_config_for_origin, ssl_config_for_proxy, false, privacy_mode, net_log,
- 0, socket_handle, resolution_callback, callback);
+ 0, socket_handle, HttpNetworkSession::NORMAL_SOCKET_POOL,
+ resolution_callback, callback);
}
int InitSocketHandleForWebSocketRequest(
@@ -415,7 +411,8 @@ int InitSocketHandleForWebSocketRequest(
request_url, request_extra_headers, request_load_flags, request_priority,
session, proxy_info, force_spdy_over_ssl, want_spdy_over_npn,
ssl_config_for_origin, ssl_config_for_proxy, true, privacy_mode, net_log,
- 0, socket_handle, resolution_callback, callback);
+ 0, socket_handle, HttpNetworkSession::WEBSOCKET_SOCKET_POOL,
+ resolution_callback, callback);
}
int InitSocketHandleForRawConnect(
@@ -439,7 +436,8 @@ int InitSocketHandleForRawConnect(
request_url, request_extra_headers, request_load_flags, request_priority,
session, proxy_info, false, false, ssl_config_for_origin,
ssl_config_for_proxy, true, privacy_mode, net_log, 0, socket_handle,
- OnHostResolutionCallback(), callback);
+ HttpNetworkSession::NORMAL_SOCKET_POOL, OnHostResolutionCallback(),
+ callback);
}
int PreconnectSocketsForHttpRequest(
@@ -460,8 +458,8 @@ int PreconnectSocketsForHttpRequest(
request_url, request_extra_headers, request_load_flags, request_priority,
session, proxy_info, force_spdy_over_ssl, want_spdy_over_npn,
ssl_config_for_origin, ssl_config_for_proxy, false, privacy_mode, net_log,
- num_preconnect_streams, NULL, OnHostResolutionCallback(),
- CompletionCallback());
+ num_preconnect_streams, NULL, HttpNetworkSession::NORMAL_SOCKET_POOL,
+ OnHostResolutionCallback(), CompletionCallback());
}
} // namespace net
diff --git a/net/socket/client_socket_pool_manager.h b/net/socket/client_socket_pool_manager.h
index a514d25..1b78324 100644
--- a/net/socket/client_socket_pool_manager.h
+++ b/net/socket/client_socket_pool_manager.h
@@ -114,6 +114,7 @@ int InitSocketHandleForHttpRequest(
// |resolution_callback| will be invoked after the the hostname is
// resolved. If |resolution_callback| does not return OK, then the
// connection will be aborted with that value.
+// This function uses WEBSOCKET_SOCKET_POOL socket pools.
int InitSocketHandleForWebSocketRequest(
const GURL& request_url,
const HttpRequestHeaders& request_extra_headers,