diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-19 22:45:53 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-19 22:45:53 +0000 |
commit | 61a86c4d5644817d291e7f22ffd0b0b5cef56295 (patch) | |
tree | dfd15e590bbbf44af479f702875d24aa19d1f491 /net/http/http_network_session.cc | |
parent | 74d7e1d0cb8040ba0bfe15619ccb240e5c7d5c19 (diff) | |
download | chromium_src-61a86c4d5644817d291e7f22ffd0b0b5cef56295.zip chromium_src-61a86c4d5644817d291e7f22ffd0b0b5cef56295.tar.gz chromium_src-61a86c4d5644817d291e7f22ffd0b0b5cef56295.tar.bz2 |
Fix crash on IP address change.
Revert r43908: "Flush socket pools and SPDY session pool properly on explicit requests and network changes."
This change was reverted on the 375 branch, but not on trunk.
BUG=41190
Review URL: http://codereview.chromium.org/1604045
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44973 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_network_session.cc')
-rw-r--r-- | net/http/http_network_session.cc | 65 |
1 files changed, 23 insertions, 42 deletions
diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc index ea8d1d7..146223b6 100644 --- a/net/http/http_network_session.cc +++ b/net/http/http_network_session.cc @@ -29,68 +29,49 @@ HttpNetworkSession::HttpNetworkSession( ProxyService* proxy_service, ClientSocketFactory* client_socket_factory, SSLConfigService* ssl_config_service, + SpdySessionPool* spdy_session_pool, HttpAuthHandlerFactory* http_auth_handler_factory) : network_change_notifier_(network_change_notifier), + tcp_socket_pool_(new TCPClientSocketPool( + max_sockets_, max_sockets_per_group_, "Transport", + host_resolver, client_socket_factory, network_change_notifier_)), + socks_socket_pool_(new SOCKSClientSocketPool( + max_sockets_, max_sockets_per_group_, "SOCKS", host_resolver, + new TCPClientSocketPool(max_sockets_, max_sockets_per_group_, + "TCPForSOCKS", host_resolver, + client_socket_factory, + network_change_notifier_), + network_change_notifier_)), socket_factory_(client_socket_factory), host_resolver_(host_resolver), - tcp_socket_pool_(CreateNewTCPSocketPool()), - socks_socket_pool_(CreateNewSOCKSSocketPool()), proxy_service_(proxy_service), ssl_config_service_(ssl_config_service), - spdy_session_pool_(new SpdySessionPool()), + spdy_session_pool_(spdy_session_pool), http_auth_handler_factory_(http_auth_handler_factory) { DCHECK(proxy_service); DCHECK(ssl_config_service); - - if (network_change_notifier) - network_change_notifier_->AddObserver(this); } HttpNetworkSession::~HttpNetworkSession() { - if (network_change_notifier_) - network_change_notifier_->RemoveObserver(this); } // static void HttpNetworkSession::set_max_sockets_per_group(int socket_count) { - DCHECK_LT(0, socket_count); + DCHECK(0 < socket_count); // The following is a sanity check... but we should NEVER be near this value. - DCHECK_GT(100, socket_count); + DCHECK(100 > socket_count); max_sockets_per_group_ = socket_count; } -void HttpNetworkSession::Flush() { - host_resolver()->Flush(); - tcp_socket_pool()->CloseIdleSockets(); - tcp_socket_pool_ = CreateNewTCPSocketPool(); - socks_socket_pool()->CloseIdleSockets(); - socks_socket_pool_ = CreateNewSOCKSSocketPool(); - spdy_session_pool_->CloseAllSessions(); - spdy_session_pool_ = new SpdySessionPool; -} - -void HttpNetworkSession::OnIPAddressChanged() { - Flush(); -} - -scoped_refptr<TCPClientSocketPool> -HttpNetworkSession::CreateNewTCPSocketPool() { - // TODO(vandebo) when we've completely converted to pools, the base TCP - // pool name should get changed to TCP instead of Transport. - return new TCPClientSocketPool(max_sockets_, - max_sockets_per_group_, - "Transport", - host_resolver_, - socket_factory_); -} - -scoped_refptr<SOCKSClientSocketPool> -HttpNetworkSession::CreateNewSOCKSSocketPool() { - return new SOCKSClientSocketPool( - max_sockets_, max_sockets_per_group_, "SOCKS", host_resolver_, - new TCPClientSocketPool(max_sockets_, max_sockets_per_group_, - "TCPForSOCKS", host_resolver_, - socket_factory_)); +// TODO(vandebo) when we've completely converted to pools, the base TCP +// pool name should get changed to TCP instead of Transport. +void HttpNetworkSession::ReplaceTCPSocketPool() { + tcp_socket_pool_ = new TCPClientSocketPool(max_sockets_, + max_sockets_per_group_, + "Transport", + host_resolver_, + socket_factory_, + network_change_notifier_); } } // namespace net |