diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-29 20:29:23 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-29 20:29:23 +0000 |
commit | 2b7523db7224f3460bb61a30f1ef420bafbd2822 (patch) | |
tree | a20fc25d80196cd2a7c748d2d94f2cba1e599286 /net/socket/client_socket_pool_base.cc | |
parent | d5a8a426e8b64ac9bfb90873b28f47bb2814899a (diff) | |
download | chromium_src-2b7523db7224f3460bb61a30f1ef420bafbd2822.zip chromium_src-2b7523db7224f3460bb61a30f1ef420bafbd2822.tar.gz chromium_src-2b7523db7224f3460bb61a30f1ef420bafbd2822.tar.bz2 |
Fix crash in client_socket_pool_base.cc.
The CHECK that was being hit showed a real problem: group's IsEmpty
should take into account the pending requests queue too.
I also made IsEmpty check for connecting requests queue emptiness,
so we can be sure that IsEmpty really means empty.
TEST=Added a regression test ClientSocketPoolBaseTest.GroupWithPendingRequestsIsNotEmpty to net_unittests.
http://crbug.com/17985
Review URL: http://codereview.chromium.org/159597
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21988 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket/client_socket_pool_base.cc')
-rw-r--r-- | net/socket/client_socket_pool_base.cc | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc index d10cf60..db3858d 100644 --- a/net/socket/client_socket_pool_base.cc +++ b/net/socket/client_socket_pool_base.cc @@ -146,9 +146,8 @@ int ClientSocketPoolBase::RequestSocket( connect_job_map_[handle] = job; } group.jobs.insert(job); - } else { - if (group.IsEmpty()) - group_map_.erase(group_name); + } else if (group.IsEmpty()) { + group_map_.erase(group_name); } return rv; @@ -281,7 +280,6 @@ void ClientSocketPoolBase::CleanupIdleSockets(bool force) { // Delete group if no longer needed. if (group.IsEmpty()) { - CHECK(group.pending_requests.empty()); group_map_.erase(i++); } else { ++i; @@ -521,7 +519,6 @@ void ClientSocketPoolBase::CancelAllConnectJobs() { // Delete group if no longer needed. if (group.IsEmpty()) { - CHECK(group.pending_requests.empty()); group_map_.erase(i++); } else { ++i; |