| 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 cdfb3f3ae549dbc0d7a7ad93dcd527e3767108f8..c40830d14816cdaf474bd9fd558cb4b7b21bffdc 100644
|
| --- a/net/socket/client_socket_pool_base.cc
|
| +++ b/net/socket/client_socket_pool_base.cc
|
| @@ -180,9 +180,12 @@ void ClientSocketPoolBaseHelper::InsertRequestIntoQueue(
|
| // static
|
| const ClientSocketPoolBaseHelper::Request*
|
| ClientSocketPoolBaseHelper::RemoveRequestFromQueue(
|
| - RequestQueue::iterator it, RequestQueue* pending_requests) {
|
| + RequestQueue::iterator it, Group* group) {
|
| const Request* req = *it;
|
| - pending_requests->erase(it);
|
| + group->mutable_pending_requests()->erase(it);
|
| + // If there are no more requests, we kill the backup timer.
|
| + if (group->pending_requests().empty())
|
| + group->CleanupBackupJob();
|
| return req;
|
| }
|
|
|
| @@ -324,8 +327,7 @@ void ClientSocketPoolBaseHelper::CancelRequest(
|
| RequestQueue::iterator it = group->mutable_pending_requests()->begin();
|
| for (; it != group->pending_requests().end(); ++it) {
|
| if ((*it)->handle() == handle) {
|
| - const Request* req =
|
| - RemoveRequestFromQueue(it, group->mutable_pending_requests());
|
| + const Request* req = RemoveRequestFromQueue(it, group);
|
| req->net_log().AddEvent(NetLog::TYPE_CANCELLED, NULL);
|
| req->net_log().EndEvent(NetLog::TYPE_SOCKET_POOL, NULL);
|
| delete req;
|
| @@ -335,10 +337,6 @@ void ClientSocketPoolBaseHelper::CancelRequest(
|
| RemoveConnectJob(*group->jobs().begin(), group);
|
| CheckForStalledSocketGroups();
|
| }
|
| -
|
| - // If there are no more requests, we kill the backup timer.
|
| - if (group->pending_requests().empty())
|
| - group->CleanupBackupJob();
|
| break;
|
| }
|
| }
|
| @@ -636,8 +634,7 @@ void ClientSocketPoolBaseHelper::OnConnectJobComplete(
|
| RemoveConnectJob(job, group);
|
| if (!group->pending_requests().empty()) {
|
| scoped_ptr<const Request> r(RemoveRequestFromQueue(
|
| - group->mutable_pending_requests()->begin(),
|
| - group->mutable_pending_requests()));
|
| + group->mutable_pending_requests()->begin(), group));
|
| LogBoundConnectJobToRequest(job_log.source(), r.get());
|
| HandOutSocket(
|
| socket.release(), false /* unused socket */, r->handle(),
|
| @@ -655,8 +652,7 @@ void ClientSocketPoolBaseHelper::OnConnectJobComplete(
|
| bool handed_out_socket = false;
|
| if (!group->pending_requests().empty()) {
|
| scoped_ptr<const Request> r(RemoveRequestFromQueue(
|
| - group->mutable_pending_requests()->begin(),
|
| - group->mutable_pending_requests()));
|
| + group->mutable_pending_requests()->begin(), group));
|
| LogBoundConnectJobToRequest(job_log.source(), r.get());
|
| job->GetAdditionalErrorState(r->handle());
|
| RemoveConnectJob(job, group);
|
| @@ -722,8 +718,7 @@ void ClientSocketPoolBaseHelper::ProcessPendingRequest(
|
| *group->pending_requests().begin());
|
| if (rv != ERR_IO_PENDING) {
|
| scoped_ptr<const Request> request(RemoveRequestFromQueue(
|
| - group->mutable_pending_requests()->begin(),
|
| - group->mutable_pending_requests()));
|
| + group->mutable_pending_requests()->begin(), group));
|
| if (group->IsEmpty())
|
| RemoveGroup(group_name);
|
|
|
|
|