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

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

Issue 8572041: Make ClientSocketPoolManager into an interface. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Merge. Created 9 years, 1 month 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 //
5 // ClientSocketPoolManager manages access to all ClientSocketPools. It's a
6 // simple container for all of them. Most importantly, it handles the lifetime
7 // and destruction order properly.
8 4
9 #include "net/socket/client_socket_pool_manager.h" 5 #include "net/socket/client_socket_pool_manager.h"
10 6
11 #include <string> 7 #include <string>
12 8
13 #include "base/logging.h" 9 #include "base/logging.h"
14 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
15 #include "base/values.h" 11 #include "net/base/load_flags.h"
16 #include "net/base/ssl_config_service.h"
17 #include "net/http/http_network_session.h" 12 #include "net/http/http_network_session.h"
18 #include "net/http/http_proxy_client_socket_pool.h" 13 #include "net/http/http_proxy_client_socket_pool.h"
19 #include "net/http/http_request_info.h" 14 #include "net/http/http_request_info.h"
20 #include "net/proxy/proxy_service.h" 15 #include "net/proxy/proxy_info.h"
21 #include "net/socket/client_socket_factory.h"
22 #include "net/socket/client_socket_handle.h" 16 #include "net/socket/client_socket_handle.h"
23 #include "net/socket/client_socket_pool_histograms.h"
24 #include "net/socket/socks_client_socket_pool.h" 17 #include "net/socket/socks_client_socket_pool.h"
25 #include "net/socket/ssl_client_socket_pool.h" 18 #include "net/socket/ssl_client_socket_pool.h"
26 #include "net/socket/transport_client_socket_pool.h" 19 #include "net/socket/transport_client_socket_pool.h"
27 20
28 namespace net { 21 namespace net {
29 22
30 namespace { 23 namespace {
31 24
32 // Limit of sockets of each socket pool. 25 // Limit of sockets of each socket pool.
33 int g_max_sockets_per_pool = 256; 26 int g_max_sockets_per_pool = 256;
34 27
35 // Default to allow up to 6 connections per host. Experiment and tuning may 28 // Default to allow up to 6 connections per host. Experiment and tuning may
36 // try other values (greater than 0). Too large may cause many problems, such 29 // try other values (greater than 0). Too large may cause many problems, such
37 // as home routers blocking the connections!?!? See http://crbug.com/12066. 30 // as home routers blocking the connections!?!? See http://crbug.com/12066.
38 int g_max_sockets_per_group = 6; 31 int g_max_sockets_per_group = 6;
39 32
40 // The max number of sockets to allow per proxy server. This applies both to 33 // The max number of sockets to allow per proxy server. This applies both to
41 // http and SOCKS proxies. See http://crbug.com/12066 and 34 // http and SOCKS proxies. See http://crbug.com/12066 and
42 // http://crbug.com/44501 for details about proxy server connection limits. 35 // http://crbug.com/44501 for details about proxy server connection limits.
43 int g_max_sockets_per_proxy_server = kDefaultMaxSocketsPerProxyServer; 36 int g_max_sockets_per_proxy_server = kDefaultMaxSocketsPerProxyServer;
44 37
45 // Appends information about all |socket_pools| to the end of |list|.
46 template <class MapType>
47 static void AddSocketPoolsToList(ListValue* list,
48 const MapType& socket_pools,
49 const std::string& type,
50 bool include_nested_pools) {
51 for (typename MapType::const_iterator it = socket_pools.begin();
52 it != socket_pools.end(); it++) {
53 list->Append(it->second->GetInfoAsValue(it->first.ToString(),
54 type,
55 include_nested_pools));
56 }
57 }
58
59 // The meat of the implementation for the InitSocketHandleForHttpRequest, 38 // The meat of the implementation for the InitSocketHandleForHttpRequest,
60 // InitSocketHandleForRawConnect and PreconnectSocketsForHttpRequest methods. 39 // InitSocketHandleForRawConnect and PreconnectSocketsForHttpRequest methods.
61 int InitSocketPoolHelper(const GURL& request_url, 40 int InitSocketPoolHelper(const GURL& request_url,
62 const HttpRequestHeaders& request_extra_headers, 41 const HttpRequestHeaders& request_extra_headers,
63 int request_load_flags, 42 int request_load_flags,
64 RequestPriority request_priority, 43 RequestPriority request_priority,
65 HttpNetworkSession* session, 44 HttpNetworkSession* session,
66 const ProxyInfo& proxy_info, 45 const ProxyInfo& proxy_info,
67 bool force_spdy_over_ssl, 46 bool force_spdy_over_ssl,
68 bool want_spdy_over_npn, 47 bool want_spdy_over_npn,
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 return OK; 214 return OK;
236 } 215 }
237 216
238 return socket_handle->Init(connection_group, tcp_params, 217 return socket_handle->Init(connection_group, tcp_params,
239 request_priority, callback, 218 request_priority, callback,
240 pool, net_log); 219 pool, net_log);
241 } 220 }
242 221
243 } // namespace 222 } // namespace
244 223
245 ClientSocketPoolManager::ClientSocketPoolManager( 224 ClientSocketPoolManager::ClientSocketPoolManager() {}
246 NetLog* net_log, 225 ClientSocketPoolManager::~ClientSocketPoolManager() {}
247 ClientSocketFactory* socket_factory,
248 HostResolver* host_resolver,
249 CertVerifier* cert_verifier,
250 OriginBoundCertService* origin_bound_cert_service,
251 DnsRRResolver* dnsrr_resolver,
252 DnsCertProvenanceChecker* dns_cert_checker,
253 SSLHostInfoFactory* ssl_host_info_factory,
254 ProxyService* proxy_service,
255 SSLConfigService* ssl_config_service)
256 : net_log_(net_log),
257 socket_factory_(socket_factory),
258 host_resolver_(host_resolver),
259 cert_verifier_(cert_verifier),
260 origin_bound_cert_service_(origin_bound_cert_service),
261 dnsrr_resolver_(dnsrr_resolver),
262 dns_cert_checker_(dns_cert_checker),
263 ssl_host_info_factory_(ssl_host_info_factory),
264 proxy_service_(proxy_service),
265 ssl_config_service_(ssl_config_service),
266 transport_pool_histograms_("TCP"),
267 transport_socket_pool_(new TransportClientSocketPool(
268 g_max_sockets_per_pool, g_max_sockets_per_group,
269 &transport_pool_histograms_,
270 host_resolver,
271 socket_factory_,
272 net_log)),
273 ssl_pool_histograms_("SSL2"),
274 ssl_socket_pool_(new SSLClientSocketPool(
275 g_max_sockets_per_pool, g_max_sockets_per_group,
276 &ssl_pool_histograms_,
277 host_resolver,
278 cert_verifier,
279 origin_bound_cert_service,
280 dnsrr_resolver,
281 dns_cert_checker,
282 ssl_host_info_factory,
283 socket_factory,
284 transport_socket_pool_.get(),
285 NULL /* no socks proxy */,
286 NULL /* no http proxy */,
287 ssl_config_service,
288 net_log)),
289 transport_for_socks_pool_histograms_("TCPforSOCKS"),
290 socks_pool_histograms_("SOCK"),
291 transport_for_http_proxy_pool_histograms_("TCPforHTTPProxy"),
292 transport_for_https_proxy_pool_histograms_("TCPforHTTPSProxy"),
293 ssl_for_https_proxy_pool_histograms_("SSLforHTTPSProxy"),
294 http_proxy_pool_histograms_("HTTPProxy"),
295 ssl_socket_pool_for_proxies_histograms_("SSLForProxies") {
296 CertDatabase::AddObserver(this);
297 }
298 226
299 ClientSocketPoolManager::~ClientSocketPoolManager() { 227 // static
300 CertDatabase::RemoveObserver(this); 228 int ClientSocketPoolManager::max_sockets_per_pool() {
301 } 229 return g_max_sockets_per_pool;
302
303 void ClientSocketPoolManager::FlushSocketPools() {
304 // Flush the highest level pools first, since higher level pools may release
305 // stuff to the lower level pools.
306
307 for (SSLSocketPoolMap::const_iterator it =
308 ssl_socket_pools_for_proxies_.begin();
309 it != ssl_socket_pools_for_proxies_.end();
310 ++it)
311 it->second->Flush();
312
313 for (HTTPProxySocketPoolMap::const_iterator it =
314 http_proxy_socket_pools_.begin();
315 it != http_proxy_socket_pools_.end();
316 ++it)
317 it->second->Flush();
318
319 for (SSLSocketPoolMap::const_iterator it =
320 ssl_socket_pools_for_https_proxies_.begin();
321 it != ssl_socket_pools_for_https_proxies_.end();
322 ++it)
323 it->second->Flush();
324
325 for (TransportSocketPoolMap::const_iterator it =
326 transport_socket_pools_for_https_proxies_.begin();
327 it != transport_socket_pools_for_https_proxies_.end();
328 ++it)
329 it->second->Flush();
330
331 for (TransportSocketPoolMap::const_iterator it =
332 transport_socket_pools_for_http_proxies_.begin();
333 it != transport_socket_pools_for_http_proxies_.end();
334 ++it)
335 it->second->Flush();
336
337 for (SOCKSSocketPoolMap::const_iterator it =
338 socks_socket_pools_.begin();
339 it != socks_socket_pools_.end();
340 ++it)
341 it->second->Flush();
342
343 for (TransportSocketPoolMap::const_iterator it =
344 transport_socket_pools_for_socks_proxies_.begin();
345 it != transport_socket_pools_for_socks_proxies_.end();
346 ++it)
347 it->second->Flush();
348
349 ssl_socket_pool_->Flush();
350 transport_socket_pool_->Flush();
351 }
352
353 void ClientSocketPoolManager::CloseIdleSockets() {
354 // Close sockets in the highest level pools first, since higher level pools'
355 // sockets may release stuff to the lower level pools.
356 for (SSLSocketPoolMap::const_iterator it =
357 ssl_socket_pools_for_proxies_.begin();
358 it != ssl_socket_pools_for_proxies_.end();
359 ++it)
360 it->second->CloseIdleSockets();
361
362 for (HTTPProxySocketPoolMap::const_iterator it =
363 http_proxy_socket_pools_.begin();
364 it != http_proxy_socket_pools_.end();
365 ++it)
366 it->second->CloseIdleSockets();
367
368 for (SSLSocketPoolMap::const_iterator it =
369 ssl_socket_pools_for_https_proxies_.begin();
370 it != ssl_socket_pools_for_https_proxies_.end();
371 ++it)
372 it->second->CloseIdleSockets();
373
374 for (TransportSocketPoolMap::const_iterator it =
375 transport_socket_pools_for_https_proxies_.begin();
376 it != transport_socket_pools_for_https_proxies_.end();
377 ++it)
378 it->second->CloseIdleSockets();
379
380 for (TransportSocketPoolMap::const_iterator it =
381 transport_socket_pools_for_http_proxies_.begin();
382 it != transport_socket_pools_for_http_proxies_.end();
383 ++it)
384 it->second->CloseIdleSockets();
385
386 for (SOCKSSocketPoolMap::const_iterator it =
387 socks_socket_pools_.begin();
388 it != socks_socket_pools_.end();
389 ++it)
390 it->second->CloseIdleSockets();
391
392 for (TransportSocketPoolMap::const_iterator it =
393 transport_socket_pools_for_socks_proxies_.begin();
394 it != transport_socket_pools_for_socks_proxies_.end();
395 ++it)
396 it->second->CloseIdleSockets();
397
398 ssl_socket_pool_->CloseIdleSockets();
399 transport_socket_pool_->CloseIdleSockets();
400 }
401
402 SOCKSClientSocketPool* ClientSocketPoolManager::GetSocketPoolForSOCKSProxy(
403 const HostPortPair& socks_proxy) {
404 SOCKSSocketPoolMap::const_iterator it = socks_socket_pools_.find(socks_proxy);
405 if (it != socks_socket_pools_.end()) {
406 DCHECK(ContainsKey(transport_socket_pools_for_socks_proxies_, socks_proxy));
407 return it->second;
408 }
409
410 DCHECK(!ContainsKey(transport_socket_pools_for_socks_proxies_, socks_proxy));
411
412 std::pair<TransportSocketPoolMap::iterator, bool> tcp_ret =
413 transport_socket_pools_for_socks_proxies_.insert(
414 std::make_pair(
415 socks_proxy,
416 new TransportClientSocketPool(
417 g_max_sockets_per_proxy_server, g_max_sockets_per_group,
418 &transport_for_socks_pool_histograms_,
419 host_resolver_,
420 socket_factory_,
421 net_log_)));
422 DCHECK(tcp_ret.second);
423
424 std::pair<SOCKSSocketPoolMap::iterator, bool> ret =
425 socks_socket_pools_.insert(
426 std::make_pair(socks_proxy, new SOCKSClientSocketPool(
427 g_max_sockets_per_proxy_server, g_max_sockets_per_group,
428 &socks_pool_histograms_,
429 host_resolver_,
430 tcp_ret.first->second,
431 net_log_)));
432
433 return ret.first->second;
434 }
435
436 HttpProxyClientSocketPool* ClientSocketPoolManager::GetSocketPoolForHTTPProxy(
437 const HostPortPair& http_proxy) {
438 HTTPProxySocketPoolMap::const_iterator it =
439 http_proxy_socket_pools_.find(http_proxy);
440 if (it != http_proxy_socket_pools_.end()) {
441 DCHECK(ContainsKey(transport_socket_pools_for_http_proxies_, http_proxy));
442 DCHECK(ContainsKey(transport_socket_pools_for_https_proxies_, http_proxy));
443 DCHECK(ContainsKey(ssl_socket_pools_for_https_proxies_, http_proxy));
444 return it->second;
445 }
446
447 DCHECK(!ContainsKey(transport_socket_pools_for_http_proxies_, http_proxy));
448 DCHECK(!ContainsKey(transport_socket_pools_for_https_proxies_, http_proxy));
449 DCHECK(!ContainsKey(ssl_socket_pools_for_https_proxies_, http_proxy));
450
451 std::pair<TransportSocketPoolMap::iterator, bool> tcp_http_ret =
452 transport_socket_pools_for_http_proxies_.insert(
453 std::make_pair(
454 http_proxy,
455 new TransportClientSocketPool(
456 g_max_sockets_per_proxy_server, g_max_sockets_per_group,
457 &transport_for_http_proxy_pool_histograms_,
458 host_resolver_,
459 socket_factory_,
460 net_log_)));
461 DCHECK(tcp_http_ret.second);
462
463 std::pair<TransportSocketPoolMap::iterator, bool> tcp_https_ret =
464 transport_socket_pools_for_https_proxies_.insert(
465 std::make_pair(
466 http_proxy,
467 new TransportClientSocketPool(
468 g_max_sockets_per_proxy_server, g_max_sockets_per_group,
469 &transport_for_https_proxy_pool_histograms_,
470 host_resolver_,
471 socket_factory_,
472 net_log_)));
473 DCHECK(tcp_https_ret.second);
474
475 std::pair<SSLSocketPoolMap::iterator, bool> ssl_https_ret =
476 ssl_socket_pools_for_https_proxies_.insert(
477 std::make_pair(
478 http_proxy,
479 new SSLClientSocketPool(
480 g_max_sockets_per_proxy_server, g_max_sockets_per_group,
481 &ssl_for_https_proxy_pool_histograms_,
482 host_resolver_,
483 cert_verifier_,
484 origin_bound_cert_service_,
485 dnsrr_resolver_,
486 dns_cert_checker_,
487 ssl_host_info_factory_,
488 socket_factory_,
489 tcp_https_ret.first->second /* https proxy */,
490 NULL /* no socks proxy */,
491 NULL /* no http proxy */,
492 ssl_config_service_, net_log_)));
493 DCHECK(tcp_https_ret.second);
494
495 std::pair<HTTPProxySocketPoolMap::iterator, bool> ret =
496 http_proxy_socket_pools_.insert(
497 std::make_pair(
498 http_proxy,
499 new HttpProxyClientSocketPool(
500 g_max_sockets_per_proxy_server, g_max_sockets_per_group,
501 &http_proxy_pool_histograms_,
502 host_resolver_,
503 tcp_http_ret.first->second,
504 ssl_https_ret.first->second,
505 net_log_)));
506
507 return ret.first->second;
508 }
509
510 SSLClientSocketPool* ClientSocketPoolManager::GetSocketPoolForSSLWithProxy(
511 const HostPortPair& proxy_server) {
512 SSLSocketPoolMap::const_iterator it =
513 ssl_socket_pools_for_proxies_.find(proxy_server);
514 if (it != ssl_socket_pools_for_proxies_.end())
515 return it->second;
516
517 SSLClientSocketPool* new_pool = new SSLClientSocketPool(
518 g_max_sockets_per_proxy_server, g_max_sockets_per_group,
519 &ssl_pool_histograms_,
520 host_resolver_,
521 cert_verifier_,
522 origin_bound_cert_service_,
523 dnsrr_resolver_,
524 dns_cert_checker_,
525 ssl_host_info_factory_,
526 socket_factory_,
527 NULL, /* no tcp pool, we always go through a proxy */
528 GetSocketPoolForSOCKSProxy(proxy_server),
529 GetSocketPoolForHTTPProxy(proxy_server),
530 ssl_config_service_,
531 net_log_);
532
533 std::pair<SSLSocketPoolMap::iterator, bool> ret =
534 ssl_socket_pools_for_proxies_.insert(std::make_pair(proxy_server,
535 new_pool));
536
537 return ret.first->second;
538 } 230 }
539 231
540 // static 232 // static
541 void ClientSocketPoolManager::set_max_sockets_per_pool(int socket_count) { 233 void ClientSocketPoolManager::set_max_sockets_per_pool(int socket_count) {
542 DCHECK_LT(0, socket_count); 234 DCHECK_LT(0, socket_count);
543 DCHECK_GT(1000, socket_count); // Sanity check. 235 DCHECK_GT(1000, socket_count); // Sanity check.
544 g_max_sockets_per_pool = socket_count; 236 g_max_sockets_per_pool = socket_count;
545 DCHECK_GE(g_max_sockets_per_pool, g_max_sockets_per_group); 237 DCHECK_GE(g_max_sockets_per_pool, g_max_sockets_per_group);
546 } 238 }
547 239
548 // static 240 // static
549 int ClientSocketPoolManager::max_sockets_per_group() { 241 int ClientSocketPoolManager::max_sockets_per_group() {
550 return g_max_sockets_per_group; 242 return g_max_sockets_per_group;
551 } 243 }
552 244
553 // static 245 // static
554 void ClientSocketPoolManager::set_max_sockets_per_group(int socket_count) { 246 void ClientSocketPoolManager::set_max_sockets_per_group(int socket_count) {
555 DCHECK_LT(0, socket_count); 247 DCHECK_LT(0, socket_count);
556 // The following is a sanity check... but we should NEVER be near this value. 248 // The following is a sanity check... but we should NEVER be near this value.
557 DCHECK_GT(100, socket_count); 249 DCHECK_GT(100, socket_count);
558 g_max_sockets_per_group = socket_count; 250 g_max_sockets_per_group = socket_count;
559 251
560 DCHECK_GE(g_max_sockets_per_pool, g_max_sockets_per_group); 252 DCHECK_GE(g_max_sockets_per_pool, g_max_sockets_per_group);
561 DCHECK_GE(g_max_sockets_per_proxy_server, g_max_sockets_per_group); 253 DCHECK_GE(g_max_sockets_per_proxy_server, g_max_sockets_per_group);
562 } 254 }
563 255
564 // static 256 // static
257 int ClientSocketPoolManager::max_sockets_per_proxy_server() {
258 return g_max_sockets_per_proxy_server;
259 }
260
261 // static
565 void ClientSocketPoolManager::set_max_sockets_per_proxy_server( 262 void ClientSocketPoolManager::set_max_sockets_per_proxy_server(
566 int socket_count) { 263 int socket_count) {
567 DCHECK_LT(0, socket_count); 264 DCHECK_LT(0, socket_count);
568 DCHECK_GT(100, socket_count); // Sanity check. 265 DCHECK_GT(100, socket_count); // Sanity check.
569 // Assert this case early on. The max number of sockets per group cannot 266 // Assert this case early on. The max number of sockets per group cannot
570 // exceed the max number of sockets per proxy server. 267 // exceed the max number of sockets per proxy server.
571 DCHECK_LE(g_max_sockets_per_group, socket_count); 268 DCHECK_LE(g_max_sockets_per_group, socket_count);
572 g_max_sockets_per_proxy_server = socket_count; 269 g_max_sockets_per_proxy_server = socket_count;
573 } 270 }
574 271
575 Value* ClientSocketPoolManager::SocketPoolInfoToValue() const { 272 int InitSocketHandleForHttpRequest(
576 ListValue* list = new ListValue();
577 list->Append(transport_socket_pool_->GetInfoAsValue("transport_socket_pool",
578 "transport_socket_pool",
579 false));
580 // Third parameter is false because |ssl_socket_pool_| uses
581 // |transport_socket_pool_| internally, and do not want to add it a second
582 // time.
583 list->Append(ssl_socket_pool_->GetInfoAsValue("ssl_socket_pool",
584 "ssl_socket_pool",
585 false));
586 AddSocketPoolsToList(list,
587 http_proxy_socket_pools_,
588 "http_proxy_socket_pool",
589 true);
590 AddSocketPoolsToList(list,
591 socks_socket_pools_,
592 "socks_socket_pool",
593 true);
594
595 // Third parameter is false because |ssl_socket_pools_for_proxies_| use
596 // socket pools in |http_proxy_socket_pools_| and |socks_socket_pools_|.
597 AddSocketPoolsToList(list,
598 ssl_socket_pools_for_proxies_,
599 "ssl_socket_pool_for_proxies",
600 false);
601 return list;
602 }
603
604 void ClientSocketPoolManager::OnUserCertAdded(const X509Certificate* cert) {
605 FlushSocketPools();
606 }
607
608 void ClientSocketPoolManager::OnCertTrustChanged(const X509Certificate* cert) {
609 // We should flush the socket pools if we removed trust from a
610 // cert, because a previously trusted server may have become
611 // untrusted.
612 //
613 // We should not flush the socket pools if we added trust to a
614 // cert.
615 //
616 // Since the OnCertTrustChanged method doesn't tell us what
617 // kind of trust change it is, we have to flush the socket
618 // pools to be safe.
619 FlushSocketPools();
620 }
621
622 // static
623 int ClientSocketPoolManager::InitSocketHandleForHttpRequest(
624 const GURL& request_url, 273 const GURL& request_url,
625 const HttpRequestHeaders& request_extra_headers, 274 const HttpRequestHeaders& request_extra_headers,
626 int request_load_flags, 275 int request_load_flags,
627 RequestPriority request_priority, 276 RequestPriority request_priority,
628 HttpNetworkSession* session, 277 HttpNetworkSession* session,
629 const ProxyInfo& proxy_info, 278 const ProxyInfo& proxy_info,
630 bool force_spdy_over_ssl, 279 bool force_spdy_over_ssl,
631 bool want_spdy_over_npn, 280 bool want_spdy_over_npn,
632 const SSLConfig& ssl_config_for_origin, 281 const SSLConfig& ssl_config_for_origin,
633 const SSLConfig& ssl_config_for_proxy, 282 const SSLConfig& ssl_config_for_proxy,
(...skipping 11 matching lines...) Expand all
645 want_spdy_over_npn, 294 want_spdy_over_npn,
646 ssl_config_for_origin, 295 ssl_config_for_origin,
647 ssl_config_for_proxy, 296 ssl_config_for_proxy,
648 false, 297 false,
649 net_log, 298 net_log,
650 0, 299 0,
651 socket_handle, 300 socket_handle,
652 callback); 301 callback);
653 } 302 }
654 303
655 // static 304 int InitSocketHandleForRawConnect(
656 int ClientSocketPoolManager::InitSocketHandleForRawConnect(
657 const HostPortPair& host_port_pair, 305 const HostPortPair& host_port_pair,
658 HttpNetworkSession* session, 306 HttpNetworkSession* session,
659 const ProxyInfo& proxy_info, 307 const ProxyInfo& proxy_info,
660 const SSLConfig& ssl_config_for_origin, 308 const SSLConfig& ssl_config_for_origin,
661 const SSLConfig& ssl_config_for_proxy, 309 const SSLConfig& ssl_config_for_proxy,
662 const BoundNetLog& net_log, 310 const BoundNetLog& net_log,
663 ClientSocketHandle* socket_handle, 311 ClientSocketHandle* socket_handle,
664 OldCompletionCallback* callback) { 312 OldCompletionCallback* callback) {
665 DCHECK(socket_handle); 313 DCHECK(socket_handle);
666 // Synthesize an HttpRequestInfo. 314 // Synthesize an HttpRequestInfo.
(...skipping 12 matching lines...) Expand all
679 false, 327 false,
680 ssl_config_for_origin, 328 ssl_config_for_origin,
681 ssl_config_for_proxy, 329 ssl_config_for_proxy,
682 true, 330 true,
683 net_log, 331 net_log,
684 0, 332 0,
685 socket_handle, 333 socket_handle,
686 callback); 334 callback);
687 } 335 }
688 336
689 // static 337 int PreconnectSocketsForHttpRequest(
690 int ClientSocketPoolManager::PreconnectSocketsForHttpRequest(
691 const GURL& request_url, 338 const GURL& request_url,
692 const HttpRequestHeaders& request_extra_headers, 339 const HttpRequestHeaders& request_extra_headers,
693 int request_load_flags, 340 int request_load_flags,
694 RequestPriority request_priority, 341 RequestPriority request_priority,
695 HttpNetworkSession* session, 342 HttpNetworkSession* session,
696 const ProxyInfo& proxy_info, 343 const ProxyInfo& proxy_info,
697 bool force_spdy_over_ssl, 344 bool force_spdy_over_ssl,
698 bool want_spdy_over_npn, 345 bool want_spdy_over_npn,
699 const SSLConfig& ssl_config_for_origin, 346 const SSLConfig& ssl_config_for_origin,
700 const SSLConfig& ssl_config_for_proxy, 347 const SSLConfig& ssl_config_for_proxy,
701 const BoundNetLog& net_log, 348 const BoundNetLog& net_log,
702 int num_preconnect_streams) { 349 int num_preconnect_streams) {
703 return InitSocketPoolHelper(request_url, 350 return InitSocketPoolHelper(request_url,
704 request_extra_headers, 351 request_extra_headers,
705 request_load_flags, 352 request_load_flags,
706 request_priority, 353 request_priority,
707 session, 354 session,
708 proxy_info, 355 proxy_info,
709 force_spdy_over_ssl, 356 force_spdy_over_ssl,
710 want_spdy_over_npn, 357 want_spdy_over_npn,
711 ssl_config_for_origin, 358 ssl_config_for_origin,
712 ssl_config_for_proxy, 359 ssl_config_for_proxy,
713 false, 360 false,
714 net_log, 361 net_log,
715 num_preconnect_streams, 362 num_preconnect_streams,
716 NULL, 363 NULL,
717 NULL); 364 NULL);
718 } 365 }
719 366
720
721 } // namespace net 367 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698