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

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: Fixed typo & removed CapturingNetLog arg. 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 27 matching lines...) Expand all
38 NetLog* net_log, 38 NetLog* net_log,
39 ClientSocketFactory* socket_factory, 39 ClientSocketFactory* socket_factory,
40 HostResolver* host_resolver, 40 HostResolver* host_resolver,
41 CertVerifier* cert_verifier, 41 CertVerifier* cert_verifier,
42 ChannelIDService* channel_id_service, 42 ChannelIDService* channel_id_service,
43 TransportSecurityState* transport_security_state, 43 TransportSecurityState* transport_security_state,
44 CTVerifier* cert_transparency_verifier, 44 CTVerifier* cert_transparency_verifier,
45 const std::string& ssl_session_cache_shard, 45 const std::string& ssl_session_cache_shard,
46 ProxyService* proxy_service, 46 ProxyService* proxy_service,
47 SSLConfigService* ssl_config_service, 47 SSLConfigService* ssl_config_service,
48 bool enable_ssl_connect_job_waiting,
48 HttpNetworkSession::SocketPoolType pool_type) 49 HttpNetworkSession::SocketPoolType pool_type)
49 : net_log_(net_log), 50 : net_log_(net_log),
50 socket_factory_(socket_factory), 51 socket_factory_(socket_factory),
51 host_resolver_(host_resolver), 52 host_resolver_(host_resolver),
52 cert_verifier_(cert_verifier), 53 cert_verifier_(cert_verifier),
53 channel_id_service_(channel_id_service), 54 channel_id_service_(channel_id_service),
54 transport_security_state_(transport_security_state), 55 transport_security_state_(transport_security_state),
55 cert_transparency_verifier_(cert_transparency_verifier), 56 cert_transparency_verifier_(cert_transparency_verifier),
56 ssl_session_cache_shard_(ssl_session_cache_shard), 57 ssl_session_cache_shard_(ssl_session_cache_shard),
57 proxy_service_(proxy_service), 58 proxy_service_(proxy_service),
58 ssl_config_service_(ssl_config_service), 59 ssl_config_service_(ssl_config_service),
60 enable_ssl_connect_job_waiting_(enable_ssl_connect_job_waiting),
59 pool_type_(pool_type), 61 pool_type_(pool_type),
60 transport_pool_histograms_("TCP"), 62 transport_pool_histograms_("TCP"),
61 transport_socket_pool_( 63 transport_socket_pool_(
62 pool_type == HttpNetworkSession::WEBSOCKET_SOCKET_POOL 64 pool_type == HttpNetworkSession::WEBSOCKET_SOCKET_POOL
63 ? new WebSocketTransportClientSocketPool( 65 ? new WebSocketTransportClientSocketPool(
64 max_sockets_per_pool(pool_type), 66 max_sockets_per_pool(pool_type),
65 max_sockets_per_group(pool_type), 67 max_sockets_per_group(pool_type),
66 &transport_pool_histograms_, 68 &transport_pool_histograms_,
67 host_resolver, 69 host_resolver,
68 socket_factory_, 70 socket_factory_,
69 net_log) 71 net_log)
70 : new TransportClientSocketPool(max_sockets_per_pool(pool_type), 72 : new TransportClientSocketPool(max_sockets_per_pool(pool_type),
71 max_sockets_per_group(pool_type), 73 max_sockets_per_group(pool_type),
72 &transport_pool_histograms_, 74 &transport_pool_histograms_,
73 host_resolver, 75 host_resolver,
74 socket_factory_, 76 socket_factory_,
75 net_log)), 77 net_log)),
76 ssl_pool_histograms_("SSL2"), 78 ssl_pool_histograms_("SSL2"),
77 ssl_socket_pool_(new SSLClientSocketPool( 79 ssl_socket_pool_(new SSLClientSocketPool(max_sockets_per_pool(pool_type),
78 max_sockets_per_pool(pool_type), max_sockets_per_group(pool_type), 80 max_sockets_per_group(pool_type),
79 &ssl_pool_histograms_, 81 &ssl_pool_histograms_,
80 host_resolver, 82 host_resolver,
81 cert_verifier, 83 cert_verifier,
82 channel_id_service, 84 channel_id_service,
83 transport_security_state, 85 transport_security_state,
84 cert_transparency_verifier, 86 cert_transparency_verifier,
85 ssl_session_cache_shard, 87 ssl_session_cache_shard,
86 socket_factory, 88 socket_factory,
87 transport_socket_pool_.get(), 89 transport_socket_pool_.get(),
88 NULL /* no socks proxy */, 90 NULL /* no socks proxy */,
89 NULL /* no http proxy */, 91 NULL /* no http proxy */,
90 ssl_config_service, 92 ssl_config_service,
91 net_log)), 93 enable_ssl_connect_job_waiting,
94 net_log)),
92 transport_for_socks_pool_histograms_("TCPforSOCKS"), 95 transport_for_socks_pool_histograms_("TCPforSOCKS"),
93 socks_pool_histograms_("SOCK"), 96 socks_pool_histograms_("SOCK"),
94 transport_for_http_proxy_pool_histograms_("TCPforHTTPProxy"), 97 transport_for_http_proxy_pool_histograms_("TCPforHTTPProxy"),
95 transport_for_https_proxy_pool_histograms_("TCPforHTTPSProxy"), 98 transport_for_https_proxy_pool_histograms_("TCPforHTTPSProxy"),
96 ssl_for_https_proxy_pool_histograms_("SSLforHTTPSProxy"), 99 ssl_for_https_proxy_pool_histograms_("SSLforHTTPSProxy"),
97 http_proxy_pool_histograms_("HTTPProxy"), 100 http_proxy_pool_histograms_("HTTPProxy"),
98 ssl_socket_pool_for_proxies_histograms_("SSLForProxies") { 101 ssl_socket_pool_for_proxies_histograms_("SSLForProxies") {
99 CertDatabase::GetInstance()->AddObserver(this); 102 CertDatabase::GetInstance()->AddObserver(this);
100 } 103 }
101 104
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 cert_verifier_, 302 cert_verifier_,
300 channel_id_service_, 303 channel_id_service_,
301 transport_security_state_, 304 transport_security_state_,
302 cert_transparency_verifier_, 305 cert_transparency_verifier_,
303 ssl_session_cache_shard_, 306 ssl_session_cache_shard_,
304 socket_factory_, 307 socket_factory_,
305 tcp_https_ret.first->second /* https proxy */, 308 tcp_https_ret.first->second /* https proxy */,
306 NULL /* no socks proxy */, 309 NULL /* no socks proxy */,
307 NULL /* no http proxy */, 310 NULL /* no http proxy */,
308 ssl_config_service_.get(), 311 ssl_config_service_.get(),
312 enable_ssl_connect_job_waiting_,
309 net_log_))); 313 net_log_)));
310 DCHECK(tcp_https_ret.second); 314 DCHECK(tcp_https_ret.second);
311 315
312 std::pair<HTTPProxySocketPoolMap::iterator, bool> ret = 316 std::pair<HTTPProxySocketPoolMap::iterator, bool> ret =
313 http_proxy_socket_pools_.insert( 317 http_proxy_socket_pools_.insert(
314 std::make_pair( 318 std::make_pair(
315 http_proxy, 319 http_proxy,
316 new HttpProxyClientSocketPool( 320 new HttpProxyClientSocketPool(
317 max_sockets_per_proxy_server(pool_type_), 321 max_sockets_per_proxy_server(pool_type_),
318 max_sockets_per_group(pool_type_), 322 max_sockets_per_group(pool_type_),
(...skipping 21 matching lines...) Expand all
340 cert_verifier_, 344 cert_verifier_,
341 channel_id_service_, 345 channel_id_service_,
342 transport_security_state_, 346 transport_security_state_,
343 cert_transparency_verifier_, 347 cert_transparency_verifier_,
344 ssl_session_cache_shard_, 348 ssl_session_cache_shard_,
345 socket_factory_, 349 socket_factory_,
346 NULL, /* no tcp pool, we always go through a proxy */ 350 NULL, /* no tcp pool, we always go through a proxy */
347 GetSocketPoolForSOCKSProxy(proxy_server), 351 GetSocketPoolForSOCKSProxy(proxy_server),
348 GetSocketPoolForHTTPProxy(proxy_server), 352 GetSocketPoolForHTTPProxy(proxy_server),
349 ssl_config_service_.get(), 353 ssl_config_service_.get(),
354 enable_ssl_connect_job_waiting_,
350 net_log_); 355 net_log_);
351 356
352 std::pair<SSLSocketPoolMap::iterator, bool> ret = 357 std::pair<SSLSocketPoolMap::iterator, bool> ret =
353 ssl_socket_pools_for_proxies_.insert(std::make_pair(proxy_server, 358 ssl_socket_pools_for_proxies_.insert(std::make_pair(proxy_server,
354 new_pool)); 359 new_pool));
355 360
356 return ret.first->second; 361 return ret.first->second;
357 } 362 }
358 363
359 base::Value* ClientSocketPoolManagerImpl::SocketPoolInfoToValue() const { 364 base::Value* ClientSocketPoolManagerImpl::SocketPoolInfoToValue() const {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 // We should not flush the socket pools if we added trust to a 403 // We should not flush the socket pools if we added trust to a
399 // cert. 404 // cert.
400 // 405 //
401 // Since the OnCACertChanged method doesn't tell us what 406 // Since the OnCACertChanged method doesn't tell us what
402 // kind of change it is, we have to flush the socket 407 // kind of change it is, we have to flush the socket
403 // pools to be safe. 408 // pools to be safe.
404 FlushSocketPoolsWithError(ERR_NETWORK_CHANGED); 409 FlushSocketPoolsWithError(ERR_NETWORK_CHANGED);
405 } 410 }
406 411
407 } // namespace net 412 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698