diff options
author | yhirano@chromium.org <yhirano@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-26 06:04:25 +0000 |
---|---|---|
committer | yhirano@chromium.org <yhirano@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-26 06:04:25 +0000 |
commit | cb50a3d14483ff939b4aeaabbddb99ef6db12599 (patch) | |
tree | fa1ab99379cbb68a3d5f30cbd982bc5e9da95bbc /net | |
parent | 6bfc220cd4df1577ebae83bf421134222d80b7bf (diff) | |
download | chromium_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.cc | 70 | ||||
-rw-r--r-- | net/socket/client_socket_pool_manager.cc | 32 | ||||
-rw-r--r-- | net/socket/client_socket_pool_manager.h | 1 |
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, |