| OLD | NEW |
| 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 | 4 |
| 5 #include "net/socket/ssl_client_socket_pool.h" | 5 #include "net/socket/ssl_client_socket_pool.h" |
| 6 | 6 |
| 7 #include "base/metrics/field_trial.h" | 7 #include "base/metrics/field_trial.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
| (...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 470 SSLClientSocketContext( | 470 SSLClientSocketContext( |
| 471 cert_verifier, | 471 cert_verifier, |
| 472 origin_bound_cert_service, | 472 origin_bound_cert_service, |
| 473 dnsrr_resolver, | 473 dnsrr_resolver, |
| 474 dns_cert_checker, | 474 dns_cert_checker, |
| 475 ssl_host_info_factory), | 475 ssl_host_info_factory), |
| 476 net_log)), | 476 net_log)), |
| 477 ssl_config_service_(ssl_config_service) { | 477 ssl_config_service_(ssl_config_service) { |
| 478 if (ssl_config_service_) | 478 if (ssl_config_service_) |
| 479 ssl_config_service_->AddObserver(this); | 479 ssl_config_service_->AddObserver(this); |
| 480 if (transport_pool_) |
| 481 transport_pool_->AddLayeredPool(this); |
| 482 if (socks_pool_) |
| 483 socks_pool_->AddLayeredPool(this); |
| 484 if (http_proxy_pool_) |
| 485 http_proxy_pool_->AddLayeredPool(this); |
| 480 } | 486 } |
| 481 | 487 |
| 482 SSLClientSocketPool::~SSLClientSocketPool() { | 488 SSLClientSocketPool::~SSLClientSocketPool() { |
| 489 if (http_proxy_pool_) |
| 490 http_proxy_pool_->RemoveLayeredPool(this); |
| 491 if (socks_pool_) |
| 492 socks_pool_->RemoveLayeredPool(this); |
| 493 if (transport_pool_) |
| 494 transport_pool_->RemoveLayeredPool(this); |
| 483 if (ssl_config_service_) | 495 if (ssl_config_service_) |
| 484 ssl_config_service_->RemoveObserver(this); | 496 ssl_config_service_->RemoveObserver(this); |
| 485 } | 497 } |
| 486 | 498 |
| 487 ConnectJob* SSLClientSocketPool::SSLConnectJobFactory::NewConnectJob( | 499 ConnectJob* SSLClientSocketPool::SSLConnectJobFactory::NewConnectJob( |
| 488 const std::string& group_name, | 500 const std::string& group_name, |
| 489 const PoolBase::Request& request, | 501 const PoolBase::Request& request, |
| 490 ConnectJob::Delegate* delegate) const { | 502 ConnectJob::Delegate* delegate) const { |
| 491 return new SSLConnectJob(group_name, request.params(), ConnectionTimeout(), | 503 return new SSLConnectJob(group_name, request.params(), ConnectionTimeout(), |
| 492 transport_pool_, socks_pool_, http_proxy_pool_, | 504 transport_pool_, socks_pool_, http_proxy_pool_, |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 | 537 |
| 526 void SSLClientSocketPool::ReleaseSocket(const std::string& group_name, | 538 void SSLClientSocketPool::ReleaseSocket(const std::string& group_name, |
| 527 StreamSocket* socket, int id) { | 539 StreamSocket* socket, int id) { |
| 528 base_.ReleaseSocket(group_name, socket, id); | 540 base_.ReleaseSocket(group_name, socket, id); |
| 529 } | 541 } |
| 530 | 542 |
| 531 void SSLClientSocketPool::Flush() { | 543 void SSLClientSocketPool::Flush() { |
| 532 base_.Flush(); | 544 base_.Flush(); |
| 533 } | 545 } |
| 534 | 546 |
| 547 bool SSLClientSocketPool::IsStalled() const { |
| 548 return base_.IsStalled() || |
| 549 (transport_pool_ && transport_pool_->IsStalled()) || |
| 550 (socks_pool_ && socks_pool_->IsStalled()) || |
| 551 (http_proxy_pool_ && http_proxy_pool_->IsStalled()); |
| 552 } |
| 553 |
| 535 void SSLClientSocketPool::CloseIdleSockets() { | 554 void SSLClientSocketPool::CloseIdleSockets() { |
| 536 base_.CloseIdleSockets(); | 555 base_.CloseIdleSockets(); |
| 537 } | 556 } |
| 538 | 557 |
| 539 int SSLClientSocketPool::IdleSocketCount() const { | 558 int SSLClientSocketPool::IdleSocketCount() const { |
| 540 return base_.idle_socket_count(); | 559 return base_.idle_socket_count(); |
| 541 } | 560 } |
| 542 | 561 |
| 543 int SSLClientSocketPool::IdleSocketCountInGroup( | 562 int SSLClientSocketPool::IdleSocketCountInGroup( |
| 544 const std::string& group_name) const { | 563 const std::string& group_name) const { |
| 545 return base_.IdleSocketCountInGroup(group_name); | 564 return base_.IdleSocketCountInGroup(group_name); |
| 546 } | 565 } |
| 547 | 566 |
| 548 LoadState SSLClientSocketPool::GetLoadState( | 567 LoadState SSLClientSocketPool::GetLoadState( |
| 549 const std::string& group_name, const ClientSocketHandle* handle) const { | 568 const std::string& group_name, const ClientSocketHandle* handle) const { |
| 550 return base_.GetLoadState(group_name, handle); | 569 return base_.GetLoadState(group_name, handle); |
| 551 } | 570 } |
| 552 | 571 |
| 572 void SSLClientSocketPool::AddLayeredPool(LayeredPool* layered_pool) { |
| 573 base_.AddLayeredPool(layered_pool); |
| 574 } |
| 575 |
| 576 void SSLClientSocketPool::RemoveLayeredPool(LayeredPool* layered_pool) { |
| 577 base_.RemoveLayeredPool(layered_pool); |
| 578 } |
| 579 |
| 553 DictionaryValue* SSLClientSocketPool::GetInfoAsValue( | 580 DictionaryValue* SSLClientSocketPool::GetInfoAsValue( |
| 554 const std::string& name, | 581 const std::string& name, |
| 555 const std::string& type, | 582 const std::string& type, |
| 556 bool include_nested_pools) const { | 583 bool include_nested_pools) const { |
| 557 DictionaryValue* dict = base_.GetInfoAsValue(name, type); | 584 DictionaryValue* dict = base_.GetInfoAsValue(name, type); |
| 558 if (include_nested_pools) { | 585 if (include_nested_pools) { |
| 559 ListValue* list = new ListValue(); | 586 ListValue* list = new ListValue(); |
| 560 if (transport_pool_) { | 587 if (transport_pool_) { |
| 561 list->Append(transport_pool_->GetInfoAsValue("transport_socket_pool", | 588 list->Append(transport_pool_->GetInfoAsValue("transport_socket_pool", |
| 562 "transport_socket_pool", | 589 "transport_socket_pool", |
| (...skipping 19 matching lines...) Expand all Loading... |
| 582 } | 609 } |
| 583 | 610 |
| 584 ClientSocketPoolHistograms* SSLClientSocketPool::histograms() const { | 611 ClientSocketPoolHistograms* SSLClientSocketPool::histograms() const { |
| 585 return base_.histograms(); | 612 return base_.histograms(); |
| 586 } | 613 } |
| 587 | 614 |
| 588 void SSLClientSocketPool::OnSSLConfigChanged() { | 615 void SSLClientSocketPool::OnSSLConfigChanged() { |
| 589 Flush(); | 616 Flush(); |
| 590 } | 617 } |
| 591 | 618 |
| 619 bool SSLClientSocketPool::CloseOneIdleConnection() { |
| 620 if (base_.CloseOneIdleSocket()) |
| 621 return true; |
| 622 return base_.CloseOneIdleConnectionInLayeredPool(); |
| 623 } |
| 624 |
| 592 } // namespace net | 625 } // namespace net |
| OLD | NEW |