| Index: net/socket/client_socket_pool_base.cc
|
| diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc
|
| index 99011bed65aa8e7b70ce60879d7f7ee8ea7c5ab0..31bec818325a56abc88d07f67e38193d5e844e9b 100644
|
| --- a/net/socket/client_socket_pool_base.cc
|
| +++ b/net/socket/client_socket_pool_base.cc
|
| @@ -332,6 +332,10 @@ void ClientSocketPoolBaseHelper::OnBackupSocketTimerFired(
|
|
|
| void ClientSocketPoolBaseHelper::CancelRequest(
|
| const std::string& group_name, const ClientSocketHandle* handle) {
|
| + // Running callbacks can cause the last outside reference to be released.
|
| + // Hold onto a reference.
|
| + scoped_refptr<ClientSocketPoolBaseHelper> ref_holder(this);
|
| +
|
| CHECK(ContainsKey(group_map_, group_name));
|
|
|
| Group& group = group_map_[group_name];
|
| @@ -470,6 +474,10 @@ void ClientSocketPoolBaseHelper::DecrementIdleCount() {
|
|
|
| void ClientSocketPoolBaseHelper::DoReleaseSocket(const std::string& group_name,
|
| ClientSocket* socket) {
|
| + // Running callbacks can cause the last outside reference to be released.
|
| + // Hold onto a reference.
|
| + scoped_refptr<ClientSocketPoolBaseHelper> ref_holder(this);
|
| +
|
| GroupMap::iterator i = group_map_.find(group_name);
|
| CHECK(i != group_map_.end());
|
|
|
| @@ -563,6 +571,10 @@ int ClientSocketPoolBaseHelper::FindTopStalledGroup(Group** group,
|
|
|
| void ClientSocketPoolBaseHelper::OnConnectJobComplete(
|
| int result, ConnectJob* job) {
|
| + // Running callbacks can cause the last outside reference to be released.
|
| + // Hold onto a reference.
|
| + scoped_refptr<ClientSocketPoolBaseHelper> ref_holder(this);
|
| +
|
| DCHECK_NE(ERR_IO_PENDING, result);
|
| const std::string group_name = job->group_name();
|
| GroupMap::iterator group_it = group_map_.find(group_name);
|
| @@ -611,6 +623,7 @@ void ClientSocketPoolBaseHelper::OnConnectJobComplete(
|
| }
|
|
|
| void ClientSocketPoolBaseHelper::OnIPAddressChanged() {
|
| + CancelAllConnectJobs();
|
| CloseIdleSockets();
|
| }
|
|
|
|
|