| 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..8dab0bf45c02d2fd04be4bb05d0b79b6201c676c 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,8 @@ 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;
|
| + 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 +111,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 +327,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 +405,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 +423,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 +449,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 +467,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 +516,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
|
|
|