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

Unified Diff: net/socket/client_socket_pool_base.cc

Issue 3441034: Clean up socket backup job when there are no requests. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Created 10 years, 3 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_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);

Powered by Google App Engine
This is Rietveld 408576698