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

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

Issue 353713005: Implements new, more robust design for communicating between SSLConnectJobs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Prevent certain tests from running when USE_OPENSSL is not defined. Created 6 years, 4 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) 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"
(...skipping 26 matching lines...) Expand all
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 bool enable_ssl_connect_job_waiting,
47 HttpNetworkSession::SocketPoolType pool_type) 48 HttpNetworkSession::SocketPoolType pool_type)
48 : net_log_(net_log), 49 : net_log_(net_log),
49 socket_factory_(socket_factory), 50 socket_factory_(socket_factory),
50 host_resolver_(host_resolver), 51 host_resolver_(host_resolver),
51 cert_verifier_(cert_verifier), 52 cert_verifier_(cert_verifier),
52 server_bound_cert_service_(server_bound_cert_service), 53 server_bound_cert_service_(server_bound_cert_service),
53 transport_security_state_(transport_security_state), 54 transport_security_state_(transport_security_state),
54 cert_transparency_verifier_(cert_transparency_verifier), 55 cert_transparency_verifier_(cert_transparency_verifier),
55 ssl_session_cache_shard_(ssl_session_cache_shard), 56 ssl_session_cache_shard_(ssl_session_cache_shard),
56 proxy_service_(proxy_service), 57 proxy_service_(proxy_service),
57 ssl_config_service_(ssl_config_service), 58 ssl_config_service_(ssl_config_service),
59 enable_ssl_connect_job_waiting_(enable_ssl_connect_job_waiting),
58 pool_type_(pool_type), 60 pool_type_(pool_type),
59 transport_pool_histograms_("TCP"), 61 transport_pool_histograms_("TCP"),
60 transport_socket_pool_(new TransportClientSocketPool( 62 transport_socket_pool_(
61 max_sockets_per_pool(pool_type), max_sockets_per_group(pool_type), 63 new TransportClientSocketPool(max_sockets_per_pool(pool_type),
62 &transport_pool_histograms_, 64 max_sockets_per_group(pool_type),
63 host_resolver, 65 &transport_pool_histograms_,
64 socket_factory_, 66 host_resolver,
65 net_log)), 67 socket_factory_,
68 net_log)),
66 ssl_pool_histograms_("SSL2"), 69 ssl_pool_histograms_("SSL2"),
67 ssl_socket_pool_(new SSLClientSocketPool( 70 ssl_socket_pool_(new SSLClientSocketPool(max_sockets_per_pool(pool_type),
68 max_sockets_per_pool(pool_type), max_sockets_per_group(pool_type), 71 max_sockets_per_group(pool_type),
69 &ssl_pool_histograms_, 72 &ssl_pool_histograms_,
70 host_resolver, 73 host_resolver,
71 cert_verifier, 74 cert_verifier,
72 server_bound_cert_service, 75 server_bound_cert_service,
73 transport_security_state, 76 transport_security_state,
74 cert_transparency_verifier, 77 cert_transparency_verifier,
75 ssl_session_cache_shard, 78 ssl_session_cache_shard,
76 socket_factory, 79 socket_factory,
77 transport_socket_pool_.get(), 80 transport_socket_pool_.get(),
78 NULL /* no socks proxy */, 81 NULL /* no socks proxy */,
79 NULL /* no http proxy */, 82 NULL /* no http proxy */,
80 ssl_config_service, 83 ssl_config_service,
81 net_log)), 84 enable_ssl_connect_job_waiting,
85 net_log)),
82 transport_for_socks_pool_histograms_("TCPforSOCKS"), 86 transport_for_socks_pool_histograms_("TCPforSOCKS"),
83 socks_pool_histograms_("SOCK"), 87 socks_pool_histograms_("SOCK"),
84 transport_for_http_proxy_pool_histograms_("TCPforHTTPProxy"), 88 transport_for_http_proxy_pool_histograms_("TCPforHTTPProxy"),
85 transport_for_https_proxy_pool_histograms_("TCPforHTTPSProxy"), 89 transport_for_https_proxy_pool_histograms_("TCPforHTTPSProxy"),
86 ssl_for_https_proxy_pool_histograms_("SSLforHTTPSProxy"), 90 ssl_for_https_proxy_pool_histograms_("SSLforHTTPSProxy"),
87 http_proxy_pool_histograms_("HTTPProxy"), 91 http_proxy_pool_histograms_("HTTPProxy"),
88 ssl_socket_pool_for_proxies_histograms_("SSLForProxies") { 92 ssl_socket_pool_for_proxies_histograms_("SSLForProxies") {
89 CertDatabase::GetInstance()->AddObserver(this); 93 CertDatabase::GetInstance()->AddObserver(this);
90 } 94 }
91 95
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 cert_verifier_, 293 cert_verifier_,
290 server_bound_cert_service_, 294 server_bound_cert_service_,
291 transport_security_state_, 295 transport_security_state_,
292 cert_transparency_verifier_, 296 cert_transparency_verifier_,
293 ssl_session_cache_shard_, 297 ssl_session_cache_shard_,
294 socket_factory_, 298 socket_factory_,
295 tcp_https_ret.first->second /* https proxy */, 299 tcp_https_ret.first->second /* https proxy */,
296 NULL /* no socks proxy */, 300 NULL /* no socks proxy */,
297 NULL /* no http proxy */, 301 NULL /* no http proxy */,
298 ssl_config_service_.get(), 302 ssl_config_service_.get(),
303 enable_ssl_connect_job_waiting_,
299 net_log_))); 304 net_log_)));
300 DCHECK(tcp_https_ret.second); 305 DCHECK(tcp_https_ret.second);
301 306
302 std::pair<HTTPProxySocketPoolMap::iterator, bool> ret = 307 std::pair<HTTPProxySocketPoolMap::iterator, bool> ret =
303 http_proxy_socket_pools_.insert( 308 http_proxy_socket_pools_.insert(
304 std::make_pair( 309 std::make_pair(
305 http_proxy, 310 http_proxy,
306 new HttpProxyClientSocketPool( 311 new HttpProxyClientSocketPool(
307 max_sockets_per_proxy_server(pool_type_), 312 max_sockets_per_proxy_server(pool_type_),
308 max_sockets_per_group(pool_type_), 313 max_sockets_per_group(pool_type_),
(...skipping 21 matching lines...) Expand all
330 cert_verifier_, 335 cert_verifier_,
331 server_bound_cert_service_, 336 server_bound_cert_service_,
332 transport_security_state_, 337 transport_security_state_,
333 cert_transparency_verifier_, 338 cert_transparency_verifier_,
334 ssl_session_cache_shard_, 339 ssl_session_cache_shard_,
335 socket_factory_, 340 socket_factory_,
336 NULL, /* no tcp pool, we always go through a proxy */ 341 NULL, /* no tcp pool, we always go through a proxy */
337 GetSocketPoolForSOCKSProxy(proxy_server), 342 GetSocketPoolForSOCKSProxy(proxy_server),
338 GetSocketPoolForHTTPProxy(proxy_server), 343 GetSocketPoolForHTTPProxy(proxy_server),
339 ssl_config_service_.get(), 344 ssl_config_service_.get(),
345 enable_ssl_connect_job_waiting_,
340 net_log_); 346 net_log_);
341 347
342 std::pair<SSLSocketPoolMap::iterator, bool> ret = 348 std::pair<SSLSocketPoolMap::iterator, bool> ret =
343 ssl_socket_pools_for_proxies_.insert(std::make_pair(proxy_server, 349 ssl_socket_pools_for_proxies_.insert(std::make_pair(proxy_server,
344 new_pool)); 350 new_pool));
345 351
346 return ret.first->second; 352 return ret.first->second;
347 } 353 }
348 354
349 base::Value* ClientSocketPoolManagerImpl::SocketPoolInfoToValue() const { 355 base::Value* ClientSocketPoolManagerImpl::SocketPoolInfoToValue() const {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 // We should not flush the socket pools if we added trust to a 394 // We should not flush the socket pools if we added trust to a
389 // cert. 395 // cert.
390 // 396 //
391 // Since the OnCACertChanged method doesn't tell us what 397 // Since the OnCACertChanged method doesn't tell us what
392 // kind of change it is, we have to flush the socket 398 // kind of change it is, we have to flush the socket
393 // pools to be safe. 399 // pools to be safe.
394 FlushSocketPoolsWithError(ERR_NETWORK_CHANGED); 400 FlushSocketPoolsWithError(ERR_NETWORK_CHANGED);
395 } 401 }
396 402
397 } // namespace net 403 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698