Index: net/socket/client_socket_pool_base.cc |
=================================================================== |
--- net/socket/client_socket_pool_base.cc (revision 45589) |
+++ net/socket/client_socket_pool_base.cc (working copy) |
@@ -298,9 +298,12 @@ |
CHECK(group.backup_job); |
- // If our backup job is waiting on DNS, just reset the timer. |
+ // If our backup job is waiting on DNS, or if we can't create any sockets |
+ // right now due to limits, just reset the timer. |
CHECK(group.jobs.size()); |
- if ((*group.jobs.begin())->GetLoadState() == LOAD_STATE_RESOLVING_HOST) { |
+ if (ReachedMaxSocketsLimit() || |
+ !group.HasAvailableSocketSlot(max_sockets_per_group_) || |
+ (*group.jobs.begin())->GetLoadState() == LOAD_STATE_RESOLVING_HOST) { |
group.backup_job->net_log().EndEvent( |
NetLog::TYPE_SOCKET_BACKUP_TIMER_EXTENDED); |
StartBackupSocketTimer(group_name); |
@@ -723,7 +726,10 @@ |
// Each connecting socket will eventually connect and be handed out. |
int total = handed_out_socket_count_ + connecting_socket_count_; |
DCHECK_LE(total, max_sockets_); |
- return total == max_sockets_; |
+ if (total < max_sockets_) |
+ return false; |
+ LOG(WARNING) << "ReachedMaxSocketsLimit: " << total << "/" << max_sockets_; |
+ return true; |
} |
} // namespace internal |