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

Unified Diff: net/socket/client_socket_pool_manager_impl.cc

Issue 2678353003: Close idle H2 sockets when SpdySession is initialized. (Closed)
Patch Set: Self Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: net/socket/client_socket_pool_manager_impl.cc
diff --git a/net/socket/client_socket_pool_manager_impl.cc b/net/socket/client_socket_pool_manager_impl.cc
index 26348cbb7afacbc70b9c524357087b3507ef97be..c1a5941d4f8c58d7ad8b326bc50f18375751f9bf 100644
--- a/net/socket/client_socket_pool_manager_impl.cc
+++ b/net/socket/client_socket_pool_manager_impl.cc
@@ -154,52 +154,60 @@ void ClientSocketPoolManagerImpl::FlushSocketPoolsWithError(int error) {
void ClientSocketPoolManagerImpl::CloseIdleSockets() {
// Close sockets in the highest level pools first, since higher level pools'
// sockets may release stuff to the lower level pools.
davidben 2017/03/02 22:00:51 Nit: it => pool or pair or something? (With a loop
xunjieli 2017/03/02 23:04:00 Acknowledged. No longer apply :)
- for (SSLSocketPoolMap::const_iterator it =
- ssl_socket_pools_for_proxies_.begin();
- it != ssl_socket_pools_for_proxies_.end();
- ++it)
- it->second->CloseIdleSockets();
+ for (const auto& it : ssl_socket_pools_for_proxies_)
+ it.second->CloseIdleSockets();
- for (HTTPProxySocketPoolMap::const_iterator it =
- http_proxy_socket_pools_.begin();
- it != http_proxy_socket_pools_.end();
- ++it)
- it->second->CloseIdleSockets();
+ for (const auto& it : http_proxy_socket_pools_)
+ it.second->CloseIdleSockets();
- for (SSLSocketPoolMap::const_iterator it =
- ssl_socket_pools_for_https_proxies_.begin();
- it != ssl_socket_pools_for_https_proxies_.end();
- ++it)
- it->second->CloseIdleSockets();
+ for (const auto& it : ssl_socket_pools_for_https_proxies_)
+ it.second->CloseIdleSockets();
- for (TransportSocketPoolMap::const_iterator it =
- transport_socket_pools_for_https_proxies_.begin();
- it != transport_socket_pools_for_https_proxies_.end();
- ++it)
- it->second->CloseIdleSockets();
+ for (const auto& it : transport_socket_pools_for_https_proxies_)
+ it.second->CloseIdleSockets();
- for (TransportSocketPoolMap::const_iterator it =
- transport_socket_pools_for_http_proxies_.begin();
- it != transport_socket_pools_for_http_proxies_.end();
- ++it)
- it->second->CloseIdleSockets();
+ for (const auto& it : transport_socket_pools_for_http_proxies_)
+ it.second->CloseIdleSockets();
- for (SOCKSSocketPoolMap::const_iterator it =
- socks_socket_pools_.begin();
- it != socks_socket_pools_.end();
- ++it)
- it->second->CloseIdleSockets();
+ for (const auto& it : socks_socket_pools_)
+ it.second->CloseIdleSockets();
- for (TransportSocketPoolMap::const_iterator it =
- transport_socket_pools_for_socks_proxies_.begin();
- it != transport_socket_pools_for_socks_proxies_.end();
- ++it)
- it->second->CloseIdleSockets();
+ for (const auto& it : transport_socket_pools_for_socks_proxies_)
+ it.second->CloseIdleSockets();
ssl_socket_pool_->CloseIdleSockets();
transport_socket_pool_->CloseIdleSockets();
}
+void ClientSocketPoolManagerImpl::CloseIdleSocketsInGroup(
+ const std::string& group_name) {
davidben 2017/03/02 22:00:51 This will close idle sockets with the same group n
xunjieli 2017/03/02 23:04:00 That's very neat! Done. Thanks for the suggestion.
+ // Close sockets in the highest level pools first, since higher level pools'
+ // sockets may release stuff to the lower level pools.
+ for (const auto& it : ssl_socket_pools_for_proxies_)
+ it.second->CloseIdleSocketsInGroup(group_name);
+
+ for (const auto& it : http_proxy_socket_pools_)
+ it.second->CloseIdleSocketsInGroup(group_name);
+
+ for (const auto& it : ssl_socket_pools_for_https_proxies_)
+ it.second->CloseIdleSocketsInGroup(group_name);
+
+ for (const auto& it : transport_socket_pools_for_https_proxies_)
+ it.second->CloseIdleSocketsInGroup(group_name);
+
+ for (const auto& it : transport_socket_pools_for_http_proxies_)
+ it.second->CloseIdleSocketsInGroup(group_name);
+
+ for (const auto& it : socks_socket_pools_)
+ it.second->CloseIdleSocketsInGroup(group_name);
+
+ for (const auto& it : transport_socket_pools_for_socks_proxies_)
+ it.second->CloseIdleSocketsInGroup(group_name);
+
+ ssl_socket_pool_->CloseIdleSocketsInGroup(group_name);
+ transport_socket_pool_->CloseIdleSocketsInGroup(group_name);
+}
+
TransportClientSocketPool*
ClientSocketPoolManagerImpl::GetTransportSocketPool() {
return transport_socket_pool_.get();

Powered by Google App Engine
This is Rietveld 408576698