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

Side by Side Diff: net/socket/client_socket_pool_manager_impl.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/socket/client_socket_pool_manager_impl.h" 5 #include "net/socket/client_socket_pool_manager_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "net/http/http_network_session.h" 9 #include "net/http/http_network_session.h"
10 #include "net/http/http_proxy_client_socket_pool.h" 10 #include "net/http/http_proxy_client_socket_pool.h"
11 #include "net/socket/socks_client_socket_pool.h" 11 #include "net/socket/socks_client_socket_pool.h"
12 #include "net/socket/ssl_client_socket_pool.h" 12 #include "net/socket/ssl_client_socket_pool.h"
13 #include "net/socket/transport_client_socket_pool.h" 13 #include "net/socket/transport_client_socket_pool.h"
14 #include "net/ssl/ssl_config_service.h" 14 #include "net/ssl/ssl_config_service.h"
15 15
16 namespace net { 16 namespace net {
17 17
18 namespace { 18 namespace {
19 19
20 // Appends information about all |socket_pools| to the end of |list|. 20 // Appends information about all |socket_pools| to the end of |list|.
21 template <class MapType> 21 template <class MapType>
22 void AddSocketPoolsToList(base::ListValue* list, 22 void AddSocketPoolsToList(base::ListValue* list,
23 const MapType& socket_pools, 23 const MapType& socket_pools,
24 const std::string& type, 24 const std::string& type,
25 bool include_nested_pools) { 25 bool include_nested_pools) {
26 for (typename MapType::const_iterator it = socket_pools.begin(); 26 for (typename MapType::const_iterator it = socket_pools.begin();
27 it != socket_pools.end(); it++) { 27 it != socket_pools.end();
28 list->Append(it->second->GetInfoAsValue(it->first.ToString(), 28 it++) {
29 type, 29 list->Append(it->second->GetInfoAsValue(
30 include_nested_pools)); 30 it->first.ToString(), type, include_nested_pools));
31 } 31 }
32 } 32 }
33 33
34 } // namespace 34 } // namespace
35 35
36 ClientSocketPoolManagerImpl::ClientSocketPoolManagerImpl( 36 ClientSocketPoolManagerImpl::ClientSocketPoolManagerImpl(
37 NetLog* net_log, 37 NetLog* net_log,
38 ClientSocketFactory* socket_factory, 38 ClientSocketFactory* socket_factory,
39 HostResolver* host_resolver, 39 HostResolver* host_resolver,
40 CertVerifier* cert_verifier, 40 CertVerifier* cert_verifier,
41 ServerBoundCertService* server_bound_cert_service, 41 ServerBoundCertService* server_bound_cert_service,
42 TransportSecurityState* transport_security_state, 42 TransportSecurityState* transport_security_state,
43 CTVerifier* cert_transparency_verifier, 43 CTVerifier* cert_transparency_verifier,
44 const std::string& ssl_session_cache_shard, 44 const std::string& ssl_session_cache_shard,
45 ProxyService* proxy_service, 45 ProxyService* proxy_service,
46 SSLConfigService* ssl_config_service, 46 SSLConfigService* ssl_config_service,
47 HttpNetworkSession::SocketPoolType pool_type) 47 HttpNetworkSession::SocketPoolType pool_type)
48 : net_log_(net_log), 48 : net_log_(net_log),
49 socket_factory_(socket_factory), 49 socket_factory_(socket_factory),
50 host_resolver_(host_resolver), 50 host_resolver_(host_resolver),
51 cert_verifier_(cert_verifier), 51 cert_verifier_(cert_verifier),
52 server_bound_cert_service_(server_bound_cert_service), 52 server_bound_cert_service_(server_bound_cert_service),
53 transport_security_state_(transport_security_state), 53 transport_security_state_(transport_security_state),
54 cert_transparency_verifier_(cert_transparency_verifier), 54 cert_transparency_verifier_(cert_transparency_verifier),
55 ssl_session_cache_shard_(ssl_session_cache_shard), 55 ssl_session_cache_shard_(ssl_session_cache_shard),
56 proxy_service_(proxy_service), 56 proxy_service_(proxy_service),
57 ssl_config_service_(ssl_config_service), 57 ssl_config_service_(ssl_config_service),
58 pool_type_(pool_type), 58 pool_type_(pool_type),
59 transport_pool_histograms_("TCP"), 59 transport_pool_histograms_("TCP"),
60 transport_socket_pool_(new TransportClientSocketPool( 60 transport_socket_pool_(
61 max_sockets_per_pool(pool_type), max_sockets_per_group(pool_type), 61 new TransportClientSocketPool(max_sockets_per_pool(pool_type),
62 &transport_pool_histograms_, 62 max_sockets_per_group(pool_type),
63 host_resolver, 63 &transport_pool_histograms_,
64 socket_factory_, 64 host_resolver,
65 net_log)), 65 socket_factory_,
66 net_log)),
66 ssl_pool_histograms_("SSL2"), 67 ssl_pool_histograms_("SSL2"),
67 ssl_socket_pool_(new SSLClientSocketPool( 68 ssl_socket_pool_(new SSLClientSocketPool(max_sockets_per_pool(pool_type),
68 max_sockets_per_pool(pool_type), max_sockets_per_group(pool_type), 69 max_sockets_per_group(pool_type),
69 &ssl_pool_histograms_, 70 &ssl_pool_histograms_,
70 host_resolver, 71 host_resolver,
71 cert_verifier, 72 cert_verifier,
72 server_bound_cert_service, 73 server_bound_cert_service,
73 transport_security_state, 74 transport_security_state,
74 cert_transparency_verifier, 75 cert_transparency_verifier,
75 ssl_session_cache_shard, 76 ssl_session_cache_shard,
76 socket_factory, 77 socket_factory,
77 transport_socket_pool_.get(), 78 transport_socket_pool_.get(),
78 NULL /* no socks proxy */, 79 NULL /* no socks proxy */,
79 NULL /* no http proxy */, 80 NULL /* no http proxy */,
80 ssl_config_service, 81 ssl_config_service,
81 net_log)), 82 net_log)),
82 transport_for_socks_pool_histograms_("TCPforSOCKS"), 83 transport_for_socks_pool_histograms_("TCPforSOCKS"),
83 socks_pool_histograms_("SOCK"), 84 socks_pool_histograms_("SOCK"),
84 transport_for_http_proxy_pool_histograms_("TCPforHTTPProxy"), 85 transport_for_http_proxy_pool_histograms_("TCPforHTTPProxy"),
85 transport_for_https_proxy_pool_histograms_("TCPforHTTPSProxy"), 86 transport_for_https_proxy_pool_histograms_("TCPforHTTPSProxy"),
86 ssl_for_https_proxy_pool_histograms_("SSLforHTTPSProxy"), 87 ssl_for_https_proxy_pool_histograms_("SSLforHTTPSProxy"),
87 http_proxy_pool_histograms_("HTTPProxy"), 88 http_proxy_pool_histograms_("HTTPProxy"),
88 ssl_socket_pool_for_proxies_histograms_("SSLForProxies") { 89 ssl_socket_pool_for_proxies_histograms_("SSLForProxies") {
89 CertDatabase::GetInstance()->AddObserver(this); 90 CertDatabase::GetInstance()->AddObserver(this);
90 } 91 }
91 92
92 ClientSocketPoolManagerImpl::~ClientSocketPoolManagerImpl() { 93 ClientSocketPoolManagerImpl::~ClientSocketPoolManagerImpl() {
93 CertDatabase::GetInstance()->RemoveObserver(this); 94 CertDatabase::GetInstance()->RemoveObserver(this);
94 } 95 }
95 96
96 void ClientSocketPoolManagerImpl::FlushSocketPoolsWithError(int error) { 97 void ClientSocketPoolManagerImpl::FlushSocketPoolsWithError(int error) {
97 // Flush the highest level pools first, since higher level pools may release 98 // Flush the highest level pools first, since higher level pools may release
98 // stuff to the lower level pools. 99 // stuff to the lower level pools.
99 100
100 for (SSLSocketPoolMap::const_iterator it = 101 for (SSLSocketPoolMap::const_iterator it =
101 ssl_socket_pools_for_proxies_.begin(); 102 ssl_socket_pools_for_proxies_.begin();
102 it != ssl_socket_pools_for_proxies_.end(); 103 it != ssl_socket_pools_for_proxies_.end();
103 ++it) 104 ++it)
104 it->second->FlushWithError(error); 105 it->second->FlushWithError(error);
105 106
106 for (HTTPProxySocketPoolMap::const_iterator it = 107 for (HTTPProxySocketPoolMap::const_iterator it =
107 http_proxy_socket_pools_.begin(); 108 http_proxy_socket_pools_.begin();
108 it != http_proxy_socket_pools_.end(); 109 it != http_proxy_socket_pools_.end();
109 ++it) 110 ++it)
110 it->second->FlushWithError(error); 111 it->second->FlushWithError(error);
111 112
112 for (SSLSocketPoolMap::const_iterator it = 113 for (SSLSocketPoolMap::const_iterator it =
113 ssl_socket_pools_for_https_proxies_.begin(); 114 ssl_socket_pools_for_https_proxies_.begin();
114 it != ssl_socket_pools_for_https_proxies_.end(); 115 it != ssl_socket_pools_for_https_proxies_.end();
115 ++it) 116 ++it)
116 it->second->FlushWithError(error); 117 it->second->FlushWithError(error);
117 118
118 for (TransportSocketPoolMap::const_iterator it = 119 for (TransportSocketPoolMap::const_iterator it =
119 transport_socket_pools_for_https_proxies_.begin(); 120 transport_socket_pools_for_https_proxies_.begin();
120 it != transport_socket_pools_for_https_proxies_.end(); 121 it != transport_socket_pools_for_https_proxies_.end();
121 ++it) 122 ++it)
122 it->second->FlushWithError(error); 123 it->second->FlushWithError(error);
123 124
124 for (TransportSocketPoolMap::const_iterator it = 125 for (TransportSocketPoolMap::const_iterator it =
125 transport_socket_pools_for_http_proxies_.begin(); 126 transport_socket_pools_for_http_proxies_.begin();
126 it != transport_socket_pools_for_http_proxies_.end(); 127 it != transport_socket_pools_for_http_proxies_.end();
127 ++it) 128 ++it)
128 it->second->FlushWithError(error); 129 it->second->FlushWithError(error);
129 130
130 for (SOCKSSocketPoolMap::const_iterator it = 131 for (SOCKSSocketPoolMap::const_iterator it = socks_socket_pools_.begin();
131 socks_socket_pools_.begin();
132 it != socks_socket_pools_.end(); 132 it != socks_socket_pools_.end();
133 ++it) 133 ++it)
134 it->second->FlushWithError(error); 134 it->second->FlushWithError(error);
135 135
136 for (TransportSocketPoolMap::const_iterator it = 136 for (TransportSocketPoolMap::const_iterator it =
137 transport_socket_pools_for_socks_proxies_.begin(); 137 transport_socket_pools_for_socks_proxies_.begin();
138 it != transport_socket_pools_for_socks_proxies_.end(); 138 it != transport_socket_pools_for_socks_proxies_.end();
139 ++it) 139 ++it)
140 it->second->FlushWithError(error); 140 it->second->FlushWithError(error);
141 141
142 ssl_socket_pool_->FlushWithError(error); 142 ssl_socket_pool_->FlushWithError(error);
143 transport_socket_pool_->FlushWithError(error); 143 transport_socket_pool_->FlushWithError(error);
144 } 144 }
145 145
146 void ClientSocketPoolManagerImpl::CloseIdleSockets() { 146 void ClientSocketPoolManagerImpl::CloseIdleSockets() {
147 // Close sockets in the highest level pools first, since higher level pools' 147 // Close sockets in the highest level pools first, since higher level pools'
148 // sockets may release stuff to the lower level pools. 148 // sockets may release stuff to the lower level pools.
149 for (SSLSocketPoolMap::const_iterator it = 149 for (SSLSocketPoolMap::const_iterator it =
150 ssl_socket_pools_for_proxies_.begin(); 150 ssl_socket_pools_for_proxies_.begin();
151 it != ssl_socket_pools_for_proxies_.end(); 151 it != ssl_socket_pools_for_proxies_.end();
152 ++it) 152 ++it)
153 it->second->CloseIdleSockets(); 153 it->second->CloseIdleSockets();
154 154
155 for (HTTPProxySocketPoolMap::const_iterator it = 155 for (HTTPProxySocketPoolMap::const_iterator it =
156 http_proxy_socket_pools_.begin(); 156 http_proxy_socket_pools_.begin();
157 it != http_proxy_socket_pools_.end(); 157 it != http_proxy_socket_pools_.end();
158 ++it) 158 ++it)
159 it->second->CloseIdleSockets(); 159 it->second->CloseIdleSockets();
160 160
161 for (SSLSocketPoolMap::const_iterator it = 161 for (SSLSocketPoolMap::const_iterator it =
162 ssl_socket_pools_for_https_proxies_.begin(); 162 ssl_socket_pools_for_https_proxies_.begin();
163 it != ssl_socket_pools_for_https_proxies_.end(); 163 it != ssl_socket_pools_for_https_proxies_.end();
164 ++it) 164 ++it)
165 it->second->CloseIdleSockets(); 165 it->second->CloseIdleSockets();
166 166
167 for (TransportSocketPoolMap::const_iterator it = 167 for (TransportSocketPoolMap::const_iterator it =
168 transport_socket_pools_for_https_proxies_.begin(); 168 transport_socket_pools_for_https_proxies_.begin();
169 it != transport_socket_pools_for_https_proxies_.end(); 169 it != transport_socket_pools_for_https_proxies_.end();
170 ++it) 170 ++it)
171 it->second->CloseIdleSockets(); 171 it->second->CloseIdleSockets();
172 172
173 for (TransportSocketPoolMap::const_iterator it = 173 for (TransportSocketPoolMap::const_iterator it =
174 transport_socket_pools_for_http_proxies_.begin(); 174 transport_socket_pools_for_http_proxies_.begin();
175 it != transport_socket_pools_for_http_proxies_.end(); 175 it != transport_socket_pools_for_http_proxies_.end();
176 ++it) 176 ++it)
177 it->second->CloseIdleSockets(); 177 it->second->CloseIdleSockets();
178 178
179 for (SOCKSSocketPoolMap::const_iterator it = 179 for (SOCKSSocketPoolMap::const_iterator it = socks_socket_pools_.begin();
180 socks_socket_pools_.begin();
181 it != socks_socket_pools_.end(); 180 it != socks_socket_pools_.end();
182 ++it) 181 ++it)
183 it->second->CloseIdleSockets(); 182 it->second->CloseIdleSockets();
184 183
185 for (TransportSocketPoolMap::const_iterator it = 184 for (TransportSocketPoolMap::const_iterator it =
186 transport_socket_pools_for_socks_proxies_.begin(); 185 transport_socket_pools_for_socks_proxies_.begin();
187 it != transport_socket_pools_for_socks_proxies_.end(); 186 it != transport_socket_pools_for_socks_proxies_.end();
188 ++it) 187 ++it)
189 it->second->CloseIdleSockets(); 188 it->second->CloseIdleSockets();
190 189
191 ssl_socket_pool_->CloseIdleSockets(); 190 ssl_socket_pool_->CloseIdleSockets();
192 transport_socket_pool_->CloseIdleSockets(); 191 transport_socket_pool_->CloseIdleSockets();
193 } 192 }
194 193
195 TransportClientSocketPool* 194 TransportClientSocketPool*
196 ClientSocketPoolManagerImpl::GetTransportSocketPool() { 195 ClientSocketPoolManagerImpl::GetTransportSocketPool() {
197 return transport_socket_pool_.get(); 196 return transport_socket_pool_.get();
198 } 197 }
199 198
200 SSLClientSocketPool* ClientSocketPoolManagerImpl::GetSSLSocketPool() { 199 SSLClientSocketPool* ClientSocketPoolManagerImpl::GetSSLSocketPool() {
201 return ssl_socket_pool_.get(); 200 return ssl_socket_pool_.get();
202 } 201 }
203 202
204 SOCKSClientSocketPool* ClientSocketPoolManagerImpl::GetSocketPoolForSOCKSProxy( 203 SOCKSClientSocketPool* ClientSocketPoolManagerImpl::GetSocketPoolForSOCKSProxy(
205 const HostPortPair& socks_proxy) { 204 const HostPortPair& socks_proxy) {
206 SOCKSSocketPoolMap::const_iterator it = socks_socket_pools_.find(socks_proxy); 205 SOCKSSocketPoolMap::const_iterator it = socks_socket_pools_.find(socks_proxy);
207 if (it != socks_socket_pools_.end()) { 206 if (it != socks_socket_pools_.end()) {
208 DCHECK(ContainsKey(transport_socket_pools_for_socks_proxies_, socks_proxy)); 207 DCHECK(ContainsKey(transport_socket_pools_for_socks_proxies_, socks_proxy));
209 return it->second; 208 return it->second;
210 } 209 }
211 210
212 DCHECK(!ContainsKey(transport_socket_pools_for_socks_proxies_, socks_proxy)); 211 DCHECK(!ContainsKey(transport_socket_pools_for_socks_proxies_, socks_proxy));
213 212
214 std::pair<TransportSocketPoolMap::iterator, bool> tcp_ret = 213 std::pair<TransportSocketPoolMap::iterator, bool> tcp_ret =
215 transport_socket_pools_for_socks_proxies_.insert( 214 transport_socket_pools_for_socks_proxies_.insert(
216 std::make_pair( 215 std::make_pair(socks_proxy,
217 socks_proxy, 216 new TransportClientSocketPool(
218 new TransportClientSocketPool( 217 max_sockets_per_proxy_server(pool_type_),
219 max_sockets_per_proxy_server(pool_type_), 218 max_sockets_per_group(pool_type_),
220 max_sockets_per_group(pool_type_), 219 &transport_for_socks_pool_histograms_,
221 &transport_for_socks_pool_histograms_, 220 host_resolver_,
222 host_resolver_, 221 socket_factory_,
223 socket_factory_, 222 net_log_)));
224 net_log_)));
225 DCHECK(tcp_ret.second); 223 DCHECK(tcp_ret.second);
226 224
227 std::pair<SOCKSSocketPoolMap::iterator, bool> ret = 225 std::pair<SOCKSSocketPoolMap::iterator, bool> ret =
228 socks_socket_pools_.insert( 226 socks_socket_pools_.insert(std::make_pair(
229 std::make_pair(socks_proxy, new SOCKSClientSocketPool( 227 socks_proxy,
230 max_sockets_per_proxy_server(pool_type_), 228 new SOCKSClientSocketPool(max_sockets_per_proxy_server(pool_type_),
231 max_sockets_per_group(pool_type_), 229 max_sockets_per_group(pool_type_),
232 &socks_pool_histograms_, 230 &socks_pool_histograms_,
233 host_resolver_, 231 host_resolver_,
234 tcp_ret.first->second, 232 tcp_ret.first->second,
235 net_log_))); 233 net_log_)));
236 234
237 return ret.first->second; 235 return ret.first->second;
238 } 236 }
239 237
240 HttpProxyClientSocketPool* 238 HttpProxyClientSocketPool*
241 ClientSocketPoolManagerImpl::GetSocketPoolForHTTPProxy( 239 ClientSocketPoolManagerImpl::GetSocketPoolForHTTPProxy(
242 const HostPortPair& http_proxy) { 240 const HostPortPair& http_proxy) {
243 HTTPProxySocketPoolMap::const_iterator it = 241 HTTPProxySocketPoolMap::const_iterator it =
244 http_proxy_socket_pools_.find(http_proxy); 242 http_proxy_socket_pools_.find(http_proxy);
245 if (it != http_proxy_socket_pools_.end()) { 243 if (it != http_proxy_socket_pools_.end()) {
246 DCHECK(ContainsKey(transport_socket_pools_for_http_proxies_, http_proxy)); 244 DCHECK(ContainsKey(transport_socket_pools_for_http_proxies_, http_proxy));
247 DCHECK(ContainsKey(transport_socket_pools_for_https_proxies_, http_proxy)); 245 DCHECK(ContainsKey(transport_socket_pools_for_https_proxies_, http_proxy));
248 DCHECK(ContainsKey(ssl_socket_pools_for_https_proxies_, http_proxy)); 246 DCHECK(ContainsKey(ssl_socket_pools_for_https_proxies_, http_proxy));
249 return it->second; 247 return it->second;
250 } 248 }
251 249
252 DCHECK(!ContainsKey(transport_socket_pools_for_http_proxies_, http_proxy)); 250 DCHECK(!ContainsKey(transport_socket_pools_for_http_proxies_, http_proxy));
253 DCHECK(!ContainsKey(transport_socket_pools_for_https_proxies_, http_proxy)); 251 DCHECK(!ContainsKey(transport_socket_pools_for_https_proxies_, http_proxy));
254 DCHECK(!ContainsKey(ssl_socket_pools_for_https_proxies_, http_proxy)); 252 DCHECK(!ContainsKey(ssl_socket_pools_for_https_proxies_, http_proxy));
255 253
256 std::pair<TransportSocketPoolMap::iterator, bool> tcp_http_ret = 254 std::pair<TransportSocketPoolMap::iterator, bool> tcp_http_ret =
257 transport_socket_pools_for_http_proxies_.insert( 255 transport_socket_pools_for_http_proxies_.insert(
258 std::make_pair( 256 std::make_pair(http_proxy,
259 http_proxy, 257 new TransportClientSocketPool(
260 new TransportClientSocketPool( 258 max_sockets_per_proxy_server(pool_type_),
261 max_sockets_per_proxy_server(pool_type_), 259 max_sockets_per_group(pool_type_),
262 max_sockets_per_group(pool_type_), 260 &transport_for_http_proxy_pool_histograms_,
263 &transport_for_http_proxy_pool_histograms_, 261 host_resolver_,
264 host_resolver_, 262 socket_factory_,
265 socket_factory_, 263 net_log_)));
266 net_log_)));
267 DCHECK(tcp_http_ret.second); 264 DCHECK(tcp_http_ret.second);
268 265
269 std::pair<TransportSocketPoolMap::iterator, bool> tcp_https_ret = 266 std::pair<TransportSocketPoolMap::iterator, bool> tcp_https_ret =
270 transport_socket_pools_for_https_proxies_.insert( 267 transport_socket_pools_for_https_proxies_.insert(
271 std::make_pair( 268 std::make_pair(http_proxy,
272 http_proxy, 269 new TransportClientSocketPool(
273 new TransportClientSocketPool( 270 max_sockets_per_proxy_server(pool_type_),
274 max_sockets_per_proxy_server(pool_type_), 271 max_sockets_per_group(pool_type_),
275 max_sockets_per_group(pool_type_), 272 &transport_for_https_proxy_pool_histograms_,
276 &transport_for_https_proxy_pool_histograms_, 273 host_resolver_,
277 host_resolver_, 274 socket_factory_,
278 socket_factory_, 275 net_log_)));
279 net_log_)));
280 DCHECK(tcp_https_ret.second); 276 DCHECK(tcp_https_ret.second);
281 277
282 std::pair<SSLSocketPoolMap::iterator, bool> ssl_https_ret = 278 std::pair<SSLSocketPoolMap::iterator, bool> ssl_https_ret =
283 ssl_socket_pools_for_https_proxies_.insert(std::make_pair( 279 ssl_socket_pools_for_https_proxies_.insert(std::make_pair(
284 http_proxy, 280 http_proxy,
285 new SSLClientSocketPool(max_sockets_per_proxy_server(pool_type_), 281 new SSLClientSocketPool(max_sockets_per_proxy_server(pool_type_),
286 max_sockets_per_group(pool_type_), 282 max_sockets_per_group(pool_type_),
287 &ssl_for_https_proxy_pool_histograms_, 283 &ssl_for_https_proxy_pool_histograms_,
288 host_resolver_, 284 host_resolver_,
289 cert_verifier_, 285 cert_verifier_,
290 server_bound_cert_service_, 286 server_bound_cert_service_,
291 transport_security_state_, 287 transport_security_state_,
292 cert_transparency_verifier_, 288 cert_transparency_verifier_,
293 ssl_session_cache_shard_, 289 ssl_session_cache_shard_,
294 socket_factory_, 290 socket_factory_,
295 tcp_https_ret.first->second /* https proxy */, 291 tcp_https_ret.first->second /* https proxy */,
296 NULL /* no socks proxy */, 292 NULL /* no socks proxy */,
297 NULL /* no http proxy */, 293 NULL /* no http proxy */,
298 ssl_config_service_.get(), 294 ssl_config_service_.get(),
299 net_log_))); 295 net_log_)));
300 DCHECK(tcp_https_ret.second); 296 DCHECK(tcp_https_ret.second);
301 297
302 std::pair<HTTPProxySocketPoolMap::iterator, bool> ret = 298 std::pair<HTTPProxySocketPoolMap::iterator, bool> ret =
303 http_proxy_socket_pools_.insert( 299 http_proxy_socket_pools_.insert(
304 std::make_pair( 300 std::make_pair(http_proxy,
305 http_proxy, 301 new HttpProxyClientSocketPool(
306 new HttpProxyClientSocketPool( 302 max_sockets_per_proxy_server(pool_type_),
307 max_sockets_per_proxy_server(pool_type_), 303 max_sockets_per_group(pool_type_),
308 max_sockets_per_group(pool_type_), 304 &http_proxy_pool_histograms_,
309 &http_proxy_pool_histograms_, 305 host_resolver_,
310 host_resolver_, 306 tcp_http_ret.first->second,
311 tcp_http_ret.first->second, 307 ssl_https_ret.first->second,
312 ssl_https_ret.first->second, 308 net_log_)));
313 net_log_)));
314 309
315 return ret.first->second; 310 return ret.first->second;
316 } 311 }
317 312
318 SSLClientSocketPool* ClientSocketPoolManagerImpl::GetSocketPoolForSSLWithProxy( 313 SSLClientSocketPool* ClientSocketPoolManagerImpl::GetSocketPoolForSSLWithProxy(
319 const HostPortPair& proxy_server) { 314 const HostPortPair& proxy_server) {
320 SSLSocketPoolMap::const_iterator it = 315 SSLSocketPoolMap::const_iterator it =
321 ssl_socket_pools_for_proxies_.find(proxy_server); 316 ssl_socket_pools_for_proxies_.find(proxy_server);
322 if (it != ssl_socket_pools_for_proxies_.end()) 317 if (it != ssl_socket_pools_for_proxies_.end())
323 return it->second; 318 return it->second;
324 319
325 SSLClientSocketPool* new_pool = new SSLClientSocketPool( 320 SSLClientSocketPool* new_pool = new SSLClientSocketPool(
326 max_sockets_per_proxy_server(pool_type_), 321 max_sockets_per_proxy_server(pool_type_),
327 max_sockets_per_group(pool_type_), 322 max_sockets_per_group(pool_type_),
328 &ssl_pool_histograms_, 323 &ssl_pool_histograms_,
329 host_resolver_, 324 host_resolver_,
330 cert_verifier_, 325 cert_verifier_,
331 server_bound_cert_service_, 326 server_bound_cert_service_,
332 transport_security_state_, 327 transport_security_state_,
333 cert_transparency_verifier_, 328 cert_transparency_verifier_,
334 ssl_session_cache_shard_, 329 ssl_session_cache_shard_,
335 socket_factory_, 330 socket_factory_,
336 NULL, /* no tcp pool, we always go through a proxy */ 331 NULL, /* no tcp pool, we always go through a proxy */
337 GetSocketPoolForSOCKSProxy(proxy_server), 332 GetSocketPoolForSOCKSProxy(proxy_server),
338 GetSocketPoolForHTTPProxy(proxy_server), 333 GetSocketPoolForHTTPProxy(proxy_server),
339 ssl_config_service_.get(), 334 ssl_config_service_.get(),
340 net_log_); 335 net_log_);
341 336
342 std::pair<SSLSocketPoolMap::iterator, bool> ret = 337 std::pair<SSLSocketPoolMap::iterator, bool> ret =
343 ssl_socket_pools_for_proxies_.insert(std::make_pair(proxy_server, 338 ssl_socket_pools_for_proxies_.insert(
344 new_pool)); 339 std::make_pair(proxy_server, new_pool));
345 340
346 return ret.first->second; 341 return ret.first->second;
347 } 342 }
348 343
349 base::Value* ClientSocketPoolManagerImpl::SocketPoolInfoToValue() const { 344 base::Value* ClientSocketPoolManagerImpl::SocketPoolInfoToValue() const {
350 base::ListValue* list = new base::ListValue(); 345 base::ListValue* list = new base::ListValue();
351 list->Append(transport_socket_pool_->GetInfoAsValue("transport_socket_pool", 346 list->Append(transport_socket_pool_->GetInfoAsValue(
352 "transport_socket_pool", 347 "transport_socket_pool", "transport_socket_pool", false));
353 false));
354 // Third parameter is false because |ssl_socket_pool_| uses 348 // Third parameter is false because |ssl_socket_pool_| uses
355 // |transport_socket_pool_| internally, and do not want to add it a second 349 // |transport_socket_pool_| internally, and do not want to add it a second
356 // time. 350 // time.
357 list->Append(ssl_socket_pool_->GetInfoAsValue("ssl_socket_pool", 351 list->Append(ssl_socket_pool_->GetInfoAsValue(
358 "ssl_socket_pool", 352 "ssl_socket_pool", "ssl_socket_pool", false));
359 false)); 353 AddSocketPoolsToList(
360 AddSocketPoolsToList(list, 354 list, http_proxy_socket_pools_, "http_proxy_socket_pool", true);
361 http_proxy_socket_pools_, 355 AddSocketPoolsToList(list, socks_socket_pools_, "socks_socket_pool", true);
362 "http_proxy_socket_pool",
363 true);
364 AddSocketPoolsToList(list,
365 socks_socket_pools_,
366 "socks_socket_pool",
367 true);
368 356
369 // Third parameter is false because |ssl_socket_pools_for_proxies_| use 357 // Third parameter is false because |ssl_socket_pools_for_proxies_| use
370 // socket pools in |http_proxy_socket_pools_| and |socks_socket_pools_|. 358 // socket pools in |http_proxy_socket_pools_| and |socks_socket_pools_|.
371 AddSocketPoolsToList(list, 359 AddSocketPoolsToList(list,
372 ssl_socket_pools_for_proxies_, 360 ssl_socket_pools_for_proxies_,
373 "ssl_socket_pool_for_proxies", 361 "ssl_socket_pool_for_proxies",
374 false); 362 false);
375 return list; 363 return list;
376 } 364 }
377 365
378 void ClientSocketPoolManagerImpl::OnCertAdded(const X509Certificate* cert) { 366 void ClientSocketPoolManagerImpl::OnCertAdded(const X509Certificate* cert) {
379 FlushSocketPoolsWithError(ERR_NETWORK_CHANGED); 367 FlushSocketPoolsWithError(ERR_NETWORK_CHANGED);
380 } 368 }
381 369
382 void ClientSocketPoolManagerImpl::OnCACertChanged( 370 void ClientSocketPoolManagerImpl::OnCACertChanged(const X509Certificate* cert) {
383 const X509Certificate* cert) {
384 // We should flush the socket pools if we removed trust from a 371 // We should flush the socket pools if we removed trust from a
385 // cert, because a previously trusted server may have become 372 // cert, because a previously trusted server may have become
386 // untrusted. 373 // untrusted.
387 // 374 //
388 // We should not flush the socket pools if we added trust to a 375 // We should not flush the socket pools if we added trust to a
389 // cert. 376 // cert.
390 // 377 //
391 // Since the OnCACertChanged method doesn't tell us what 378 // Since the OnCACertChanged method doesn't tell us what
392 // kind of change it is, we have to flush the socket 379 // kind of change it is, we have to flush the socket
393 // pools to be safe. 380 // pools to be safe.
394 FlushSocketPoolsWithError(ERR_NETWORK_CHANGED); 381 FlushSocketPoolsWithError(ERR_NETWORK_CHANGED);
395 } 382 }
396 383
397 } // namespace net 384 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698