Index: net/socket/client_socket_pool_manager.cc |
diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc |
index 94cfad49471c059adf80c9b8883af55bc1a2d930..eefa46a6dd2fc4300246e2d8e16cb860a6be5966 100644 |
--- a/net/socket/client_socket_pool_manager.cc |
+++ b/net/socket/client_socket_pool_manager.cc |
@@ -66,7 +66,8 @@ static_assert(arraysize(g_max_sockets_per_proxy_server) == |
// The meat of the implementation for the InitSocketHandleForHttpRequest, |
// InitSocketHandleForRawConnect and PreconnectSocketsForHttpRequest methods. |
-int InitSocketPoolHelper(const GURL& request_url, |
+int InitSocketPoolHelper(ClientSocketPoolManager::SocketGroupType group_type, |
+ const HostPortPair endpoint, |
const HttpRequestHeaders& request_extra_headers, |
int request_load_flags, |
RequestPriority request_priority, |
@@ -88,10 +89,9 @@ int InitSocketPoolHelper(const GURL& request_url, |
scoped_refptr<SOCKSSocketParams> socks_params; |
scoped_ptr<HostPortPair> proxy_host_port; |
- bool using_ssl = request_url.SchemeIs("https") || |
- request_url.SchemeIs("wss") || force_spdy_over_ssl; |
- |
- HostPortPair origin_host_port = HostPortPair::FromURL(request_url); |
+ bool using_ssl = |
+ group_type == ClientSocketPoolManager::SSL_GROUP || force_spdy_over_ssl; |
mmenke
2015/04/07 16:36:58
This seems kinda weird. We use the group type the
Ryan Hamilton
2015/04/07 19:07:30
Oh goodness, this is hideous. You're right. I've p
mmenke
2015/04/07 19:24:16
I'm fine with keeping it for now, think we should
|
+ HostPortPair origin_host_port = endpoint; |
if (!using_ssl && session->params().testing_fixed_http_port != 0) { |
origin_host_port.set_port(session->params().testing_fixed_http_port); |
@@ -112,7 +112,7 @@ int InitSocketPoolHelper(const GURL& request_url, |
// Determine the host and port to connect to. |
std::string connection_group = origin_host_port.ToString(); |
DCHECK(!connection_group.empty()); |
- if (request_url.SchemeIs("ftp")) { |
+ if (group_type == ClientSocketPoolManager::FTP_GROUP) { |
// Combining FTP with forced SPDY over SSL would be a "path to madness". |
// Make sure we never do that. |
DCHECK(!using_ssl); |
@@ -328,6 +328,18 @@ int InitSocketPoolHelper(const GURL& request_url, |
} // namespace |
+// static |
+ClientSocketPoolManager::SocketGroupType |
+ClientSocketPoolManager::GroupTypeFromScheme(const std::string& scheme) { |
+ if (scheme == "ftp") |
+ return FTP_GROUP; |
+ |
+ if (scheme == "https" || scheme == "wss") |
+ return SSL_GROUP; |
+ |
+ return NORMAL_GROUP; |
+} |
+ |
ClientSocketPoolManager::ClientSocketPoolManager() {} |
ClientSocketPoolManager::~ClientSocketPoolManager() {} |
@@ -394,7 +406,8 @@ void ClientSocketPoolManager::set_max_sockets_per_proxy_server( |
} |
int InitSocketHandleForHttpRequest( |
- const GURL& request_url, |
+ ClientSocketPoolManager::SocketGroupType group_type, |
+ const HostPortPair& endpoint, |
const HttpRequestHeaders& request_extra_headers, |
int request_load_flags, |
RequestPriority request_priority, |
@@ -411,15 +424,16 @@ int InitSocketHandleForHttpRequest( |
const CompletionCallback& callback) { |
DCHECK(socket_handle); |
return InitSocketPoolHelper( |
- 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, HttpNetworkSession::NORMAL_SOCKET_POOL, |
- resolution_callback, callback); |
+ group_type, endpoint, 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, |
+ HttpNetworkSession::NORMAL_SOCKET_POOL, resolution_callback, callback); |
} |
int InitSocketHandleForWebSocketRequest( |
- const GURL& request_url, |
+ ClientSocketPoolManager::SocketGroupType group_type, |
+ const HostPortPair& endpoint, |
const HttpRequestHeaders& request_extra_headers, |
int request_load_flags, |
RequestPriority request_priority, |
@@ -436,11 +450,11 @@ int InitSocketHandleForWebSocketRequest( |
const CompletionCallback& callback) { |
DCHECK(socket_handle); |
return InitSocketPoolHelper( |
- 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, HttpNetworkSession::WEBSOCKET_SOCKET_POOL, |
- resolution_callback, callback); |
+ group_type, endpoint, 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, |
+ HttpNetworkSession::WEBSOCKET_SOCKET_POOL, resolution_callback, callback); |
} |
int InitSocketHandleForRawConnect( |
@@ -454,47 +468,42 @@ int InitSocketHandleForRawConnect( |
ClientSocketHandle* socket_handle, |
const CompletionCallback& callback) { |
DCHECK(socket_handle); |
- // Synthesize an HttpRequestInfo. |
- GURL request_url = GURL("http://" + host_port_pair.ToString()); |
HttpRequestHeaders request_extra_headers; |
int request_load_flags = 0; |
RequestPriority request_priority = MEDIUM; |
- |
return InitSocketPoolHelper( |
- 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, |
+ ClientSocketPoolManager::NORMAL_GROUP, host_port_pair, |
+ 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, |
HttpNetworkSession::NORMAL_SOCKET_POOL, OnHostResolutionCallback(), |
callback); |
} |
-int InitSocketHandleForTlsConnect( |
- const HostPortPair& host_port_pair, |
- HttpNetworkSession* session, |
- const ProxyInfo& proxy_info, |
- const SSLConfig& ssl_config_for_origin, |
- const SSLConfig& ssl_config_for_proxy, |
- PrivacyMode privacy_mode, |
- const BoundNetLog& net_log, |
- ClientSocketHandle* socket_handle, |
- const CompletionCallback& callback) { |
+int InitSocketHandleForTlsConnect(const HostPortPair& endpoint, |
+ HttpNetworkSession* session, |
+ const ProxyInfo& proxy_info, |
+ const SSLConfig& ssl_config_for_origin, |
+ const SSLConfig& ssl_config_for_proxy, |
+ PrivacyMode privacy_mode, |
+ const BoundNetLog& net_log, |
+ ClientSocketHandle* socket_handle, |
+ const CompletionCallback& callback) { |
DCHECK(socket_handle); |
- // Synthesize an HttpRequestInfo. |
- GURL request_url = GURL("https://" + host_port_pair.ToString()); |
HttpRequestHeaders request_extra_headers; |
int request_load_flags = 0; |
RequestPriority request_priority = MEDIUM; |
- |
return InitSocketPoolHelper( |
- 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, |
- HttpNetworkSession::NORMAL_SOCKET_POOL, OnHostResolutionCallback(), |
- callback); |
+ ClientSocketPoolManager::SSL_GROUP, endpoint, 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, HttpNetworkSession::NORMAL_SOCKET_POOL, |
+ OnHostResolutionCallback(), callback); |
} |
int PreconnectSocketsForHttpRequest( |
- const GURL& request_url, |
+ ClientSocketPoolManager::SocketGroupType group_type, |
+ const HostPortPair& endpoint, |
const HttpRequestHeaders& request_extra_headers, |
int request_load_flags, |
RequestPriority request_priority, |
@@ -508,11 +517,12 @@ int PreconnectSocketsForHttpRequest( |
const BoundNetLog& net_log, |
int num_preconnect_streams) { |
return InitSocketPoolHelper( |
- 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, HttpNetworkSession::NORMAL_SOCKET_POOL, |
- OnHostResolutionCallback(), CompletionCallback()); |
+ group_type, endpoint, 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, |
+ HttpNetworkSession::NORMAL_SOCKET_POOL, OnHostResolutionCallback(), |
+ CompletionCallback()); |
} |
} // namespace net |