Index: net/http/http_proxy_client_socket_pool.cc |
diff --git a/net/http/http_proxy_client_socket_pool.cc b/net/http/http_proxy_client_socket_pool.cc |
index ebea7767747db9a2b7552d7c14d825d753e8699a..bbd2fc9e382a8b153c5c60e70ce3b4dc530b0f76 100644 |
--- a/net/http/http_proxy_client_socket_pool.cc |
+++ b/net/http/http_proxy_client_socket_pool.cc |
@@ -397,9 +397,21 @@ HttpProxyClientSocketPool::HttpProxyClientSocketPool( |
new HttpProxyConnectJobFactory(transport_pool, |
ssl_pool, |
host_resolver, |
- net_log)) {} |
+ net_log)) { |
+ // We should always have a |transport_pool_| except in unit tests. |
+ if (transport_pool_) |
+ transport_pool_->AddLayeredPool(this); |
+ if (ssl_pool_) |
+ ssl_pool_->AddLayeredPool(this); |
+} |
-HttpProxyClientSocketPool::~HttpProxyClientSocketPool() {} |
+HttpProxyClientSocketPool::~HttpProxyClientSocketPool() { |
+ if (ssl_pool_) |
+ ssl_pool_->RemoveLayeredPool(this); |
+ // We should always have a |transport_pool_| except in unit tests. |
+ if (transport_pool_) |
+ transport_pool_->RemoveLayeredPool(this); |
+} |
int HttpProxyClientSocketPool::RequestSocket( |
const std::string& group_name, const void* socket_params, |
@@ -438,6 +450,12 @@ void HttpProxyClientSocketPool::Flush() { |
base_.Flush(); |
} |
+bool HttpProxyClientSocketPool::IsStalled() const { |
+ return base_.IsStalled() || |
+ (transport_pool_ && transport_pool_->IsStalled()) || |
+ (ssl_pool_ && ssl_pool_->IsStalled()); |
+} |
+ |
void HttpProxyClientSocketPool::CloseIdleSockets() { |
base_.CloseIdleSockets(); |
} |
@@ -456,6 +474,14 @@ LoadState HttpProxyClientSocketPool::GetLoadState( |
return base_.GetLoadState(group_name, handle); |
} |
+void HttpProxyClientSocketPool::AddLayeredPool(LayeredPool* layered_pool) { |
+ base_.AddLayeredPool(layered_pool); |
+} |
+ |
+void HttpProxyClientSocketPool::RemoveLayeredPool(LayeredPool* layered_pool) { |
+ base_.RemoveLayeredPool(layered_pool); |
+} |
+ |
DictionaryValue* HttpProxyClientSocketPool::GetInfoAsValue( |
const std::string& name, |
const std::string& type, |
@@ -486,4 +512,10 @@ ClientSocketPoolHistograms* HttpProxyClientSocketPool::histograms() const { |
return base_.histograms(); |
} |
+bool HttpProxyClientSocketPool::CloseOneIdleConnection() { |
+ if (base_.CloseOneIdleSocket()) |
+ return true; |
+ return base_.CloseOneIdleConnectionInLayeredPool(); |
+} |
+ |
} // namespace net |