Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(611)

Side by Side Diff: net/http/http_network_session.cc

Issue 2870030: Implement SSLClientSocketPool. (Closed)
Patch Set: Rebase and fix mac compile error Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_network_session.h" 5 #include "net/http/http_network_session.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/stl_util-inl.h" 10 #include "base/stl_util-inl.h"
(...skipping 26 matching lines...) Expand all
37 37
38 HttpNetworkSession::HttpNetworkSession( 38 HttpNetworkSession::HttpNetworkSession(
39 HostResolver* host_resolver, 39 HostResolver* host_resolver,
40 ProxyService* proxy_service, 40 ProxyService* proxy_service,
41 ClientSocketFactory* client_socket_factory, 41 ClientSocketFactory* client_socket_factory,
42 SSLConfigService* ssl_config_service, 42 SSLConfigService* ssl_config_service,
43 SpdySessionPool* spdy_session_pool, 43 SpdySessionPool* spdy_session_pool,
44 HttpAuthHandlerFactory* http_auth_handler_factory, 44 HttpAuthHandlerFactory* http_auth_handler_factory,
45 HttpNetworkDelegate* network_delegate, 45 HttpNetworkDelegate* network_delegate,
46 NetLog* net_log) 46 NetLog* net_log)
47 // TODO(vandebo) when we've completely converted to pools, the base TCP 47 : tcp_pool_histograms_(new ClientSocketPoolHistograms("TCP")),
48 // pool name should get changed to TCP instead of Transport.
49 : tcp_pool_histograms_(new ClientSocketPoolHistograms("Transport")),
50 tcp_for_http_proxy_pool_histograms_( 48 tcp_for_http_proxy_pool_histograms_(
51 new ClientSocketPoolHistograms("TCPforHTTPProxy")), 49 new ClientSocketPoolHistograms("TCPforHTTPProxy")),
52 http_proxy_pool_histograms_(new ClientSocketPoolHistograms("HTTPProxy")), 50 http_proxy_pool_histograms_(new ClientSocketPoolHistograms("HTTPProxy")),
53 tcp_for_socks_pool_histograms_( 51 tcp_for_socks_pool_histograms_(
54 new ClientSocketPoolHistograms("TCPforSOCKS")), 52 new ClientSocketPoolHistograms("TCPforSOCKS")),
55 socks_pool_histograms_(new ClientSocketPoolHistograms("SOCK")), 53 socks_pool_histograms_(new ClientSocketPoolHistograms("SOCK")),
56 tcp_socket_pool_(new TCPClientSocketPool(g_max_sockets, 54 ssl_pool_histograms_(new ClientSocketPoolHistograms("SSL")),
57 g_max_sockets_per_group, tcp_pool_histograms_, host_resolver, 55 tcp_socket_pool_(new TCPClientSocketPool(
58 client_socket_factory, net_log)), 56 g_max_sockets, g_max_sockets_per_group, tcp_pool_histograms_,
57 host_resolver, client_socket_factory, net_log)),
58 ssl_socket_pool_(new SSLClientSocketPool(
59 g_max_sockets, g_max_sockets_per_group, ssl_pool_histograms_,
60 host_resolver, client_socket_factory, tcp_socket_pool_, NULL,
61 NULL, net_log)),
59 socket_factory_(client_socket_factory), 62 socket_factory_(client_socket_factory),
60 host_resolver_(host_resolver), 63 host_resolver_(host_resolver),
61 proxy_service_(proxy_service), 64 proxy_service_(proxy_service),
62 ssl_config_service_(ssl_config_service), 65 ssl_config_service_(ssl_config_service),
63 spdy_session_pool_(spdy_session_pool), 66 spdy_session_pool_(spdy_session_pool),
64 http_auth_handler_factory_(http_auth_handler_factory), 67 http_auth_handler_factory_(http_auth_handler_factory),
65 network_delegate_(network_delegate), 68 network_delegate_(network_delegate),
66 net_log_(net_log) { 69 net_log_(net_log) {
67 DCHECK(proxy_service); 70 DCHECK(proxy_service);
68 DCHECK(ssl_config_service); 71 DCHECK(ssl_config_service);
69 } 72 }
70 73
71 HttpNetworkSession::~HttpNetworkSession() { 74 HttpNetworkSession::~HttpNetworkSession() {
72 } 75 }
73 76
74 const scoped_refptr<HttpProxyClientSocketPool>& 77 const scoped_refptr<HttpProxyClientSocketPool>&
75 HttpNetworkSession::GetSocketPoolForHTTPProxy(const HostPortPair& http_proxy) { 78 HttpNetworkSession::GetSocketPoolForHTTPProxy(const HostPortPair& http_proxy) {
76 HTTPProxySocketPoolMap::const_iterator it = 79 HTTPProxySocketPoolMap::const_iterator it =
77 http_proxy_socket_pool_.find(http_proxy); 80 http_proxy_socket_pools_.find(http_proxy);
78 if (it != http_proxy_socket_pool_.end()) 81 if (it != http_proxy_socket_pools_.end())
79 return it->second; 82 return it->second;
80 83
81 std::pair<HTTPProxySocketPoolMap::iterator, bool> ret = 84 std::pair<HTTPProxySocketPoolMap::iterator, bool> ret =
82 http_proxy_socket_pool_.insert( 85 http_proxy_socket_pools_.insert(
83 std::make_pair( 86 std::make_pair(
84 http_proxy, 87 http_proxy,
85 new HttpProxyClientSocketPool( 88 new HttpProxyClientSocketPool(
86 g_max_sockets_per_proxy_server, g_max_sockets_per_group, 89 g_max_sockets_per_proxy_server, g_max_sockets_per_group,
87 http_proxy_pool_histograms_, host_resolver_, 90 http_proxy_pool_histograms_, host_resolver_,
88 new TCPClientSocketPool( 91 new TCPClientSocketPool(
89 g_max_sockets_per_proxy_server, g_max_sockets_per_group, 92 g_max_sockets_per_proxy_server, g_max_sockets_per_group,
90 tcp_for_http_proxy_pool_histograms_, host_resolver_, 93 tcp_for_http_proxy_pool_histograms_, host_resolver_,
91 socket_factory_, net_log_), 94 socket_factory_, net_log_),
92 net_log_))); 95 net_log_)));
93 96
94 return ret.first->second; 97 return ret.first->second;
95 } 98 }
96 99
97 const scoped_refptr<SOCKSClientSocketPool>& 100 const scoped_refptr<SOCKSClientSocketPool>&
98 HttpNetworkSession::GetSocketPoolForSOCKSProxy( 101 HttpNetworkSession::GetSocketPoolForSOCKSProxy(
99 const HostPortPair& socks_proxy) { 102 const HostPortPair& socks_proxy) {
100 SOCKSSocketPoolMap::const_iterator it = socks_socket_pool_.find(socks_proxy); 103 SOCKSSocketPoolMap::const_iterator it = socks_socket_pools_.find(socks_proxy);
101 if (it != socks_socket_pool_.end()) 104 if (it != socks_socket_pools_.end())
102 return it->second; 105 return it->second;
103 106
104 std::pair<SOCKSSocketPoolMap::iterator, bool> ret = socks_socket_pool_.insert( 107 std::pair<SOCKSSocketPoolMap::iterator, bool> ret =
105 std::make_pair(socks_proxy, new SOCKSClientSocketPool( 108 socks_socket_pools_.insert(
106 g_max_sockets_per_proxy_server, g_max_sockets_per_group, 109 std::make_pair(socks_proxy, new SOCKSClientSocketPool(
107 socks_pool_histograms_, host_resolver_, 110 g_max_sockets_per_proxy_server, g_max_sockets_per_group,
108 new TCPClientSocketPool(g_max_sockets_per_proxy_server, 111 socks_pool_histograms_, host_resolver_,
109 g_max_sockets_per_group, tcp_for_socks_pool_histograms_, 112 new TCPClientSocketPool(g_max_sockets_per_proxy_server,
110 host_resolver_, socket_factory_, net_log_), 113 g_max_sockets_per_group, tcp_for_socks_pool_histograms_,
111 net_log_))); 114 host_resolver_, socket_factory_, net_log_),
115 net_log_)));
112 116
113 return ret.first->second; 117 return ret.first->second;
114 } 118 }
119
120 const scoped_refptr<SSLClientSocketPool>&
121 HttpNetworkSession::GetSocketPoolForSSLWithProxy(
122 const HostPortPair& proxy_server) {
123 SSLSocketPoolMap::const_iterator it =
124 ssl_socket_pools_for_proxies_.find(proxy_server);
125 if (it != ssl_socket_pools_for_proxies_.end())
126 return it->second;
127
128 SSLClientSocketPool* new_pool = new SSLClientSocketPool(
129 g_max_sockets_per_proxy_server, g_max_sockets_per_group,
130 ssl_pool_histograms_, host_resolver_, socket_factory_,
131 NULL,
132 GetSocketPoolForHTTPProxy(proxy_server),
133 GetSocketPoolForSOCKSProxy(proxy_server),
134 net_log_);
135
136 std::pair<SSLSocketPoolMap::iterator, bool> ret =
137 ssl_socket_pools_for_proxies_.insert(std::make_pair(proxy_server,
138 new_pool));
139
140 return ret.first->second;
141 }
115 142
116 // static 143 // static
117 void HttpNetworkSession::set_max_sockets_per_group(int socket_count) { 144 void HttpNetworkSession::set_max_sockets_per_group(int socket_count) {
118 DCHECK_LT(0, socket_count); 145 DCHECK_LT(0, socket_count);
119 // The following is a sanity check... but we should NEVER be near this value. 146 // The following is a sanity check... but we should NEVER be near this value.
120 DCHECK_GT(100, socket_count); 147 DCHECK_GT(100, socket_count);
121 g_max_sockets_per_group = socket_count; 148 g_max_sockets_per_group = socket_count;
122 } 149 }
123 150
124 // static 151 // static
(...skipping 10 matching lines...) Expand all
135 uint16 HttpNetworkSession::fixed_https_port() { 162 uint16 HttpNetworkSession::fixed_https_port() {
136 return g_fixed_https_port; 163 return g_fixed_https_port;
137 } 164 }
138 165
139 // static 166 // static
140 void HttpNetworkSession::set_fixed_https_port(uint16 port) { 167 void HttpNetworkSession::set_fixed_https_port(uint16 port) {
141 g_fixed_https_port = port; 168 g_fixed_https_port = port;
142 } 169 }
143 170
144 } // namespace net 171 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698