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/socket/client_socket_pool_base.h | |
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/socket/client_socket_pool_base.h')
-rw-r--r-- | net/socket/client_socket_pool_base.h | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/net/socket/client_socket_pool_base.h b/net/socket/client_socket_pool_base.h index 75572cf..d1abd58 100644 --- a/net/socket/client_socket_pool_base.h +++ b/net/socket/client_socket_pool_base.h @@ -39,6 +39,7 @@ #include "net/base/load_states.h" #include "net/base/net_errors.h" #include "net/base/net_log.h" +#include "net/base/network_change_notifier.h" #include "net/base/request_priority.h" #include "net/socket/client_socket.h" #include "net/socket/client_socket_pool.h" @@ -121,7 +122,8 @@ namespace internal { // ClientSocketPoolBase instead. class ClientSocketPoolBaseHelper : public base::RefCounted<ClientSocketPoolBaseHelper>, - public ConnectJob::Delegate { + public ConnectJob::Delegate, + public NetworkChangeNotifier::Observer { public: class Request { public: @@ -168,7 +170,8 @@ class ClientSocketPoolBaseHelper int max_sockets_per_group, base::TimeDelta unused_idle_socket_timeout, base::TimeDelta used_idle_socket_timeout, - ConnectJobFactory* connect_job_factory); + ConnectJobFactory* connect_job_factory, + NetworkChangeNotifier* network_change_notifier); // See ClientSocketPool::RequestSocket for documentation on this function. // Note that |request| must be heap allocated. If ERR_IO_PENDING is returned, @@ -208,6 +211,9 @@ class ClientSocketPoolBaseHelper // ConnectJob::Delegate methods: virtual void OnConnectJobComplete(int result, ConnectJob* job); + // NetworkChangeNotifier::Observer methods: + virtual void OnIPAddressChanged(); + // For testing. bool may_have_stalled_group() const { return may_have_stalled_group_; } @@ -428,6 +434,8 @@ class ClientSocketPoolBaseHelper const scoped_ptr<ConnectJobFactory> connect_job_factory_; + NetworkChangeNotifier* const network_change_notifier_; + // TODO(vandebo) Remove when backup jobs move to TCPClientSocketPool bool backup_jobs_enabled_; @@ -494,12 +502,14 @@ class ClientSocketPoolBase { const std::string& name, base::TimeDelta unused_idle_socket_timeout, base::TimeDelta used_idle_socket_timeout, - ConnectJobFactory* connect_job_factory) + ConnectJobFactory* connect_job_factory, + NetworkChangeNotifier* network_change_notifier) : name_(name), helper_(new internal::ClientSocketPoolBaseHelper( max_sockets, max_sockets_per_group, unused_idle_socket_timeout, used_idle_socket_timeout, - new ConnectJobFactoryAdaptor(connect_job_factory))) {} + new ConnectJobFactoryAdaptor(connect_job_factory), + network_change_notifier)) {} virtual ~ClientSocketPoolBase() {} |