diff options
-rw-r--r-- | net/socket/client_socket_pool_base.cc | 8 | ||||
-rw-r--r-- | net/socket/client_socket_pool_base_unittest.cc | 7 |
2 files changed, 13 insertions, 2 deletions
diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc index 86ba2dd..816ecc9 100644 --- a/net/socket/client_socket_pool_base.cc +++ b/net/socket/client_socket_pool_base.cc @@ -341,8 +341,12 @@ int ClientSocketPoolBaseHelper::RequestSocketInternal( group->AddJob(connect_job.release()); } else { LogBoundConnectJobToRequest(connect_job->net_log().source(), request); - connect_job->GetAdditionalErrorState(handle); - ClientSocket* error_socket = connect_job->ReleaseSocket(); + ClientSocket* error_socket = NULL; + if (!preconnecting) { + DCHECK(handle); + connect_job->GetAdditionalErrorState(handle); + error_socket = connect_job->ReleaseSocket(); + } if (error_socket) { HandOutSocket(error_socket, false /* not reused */, handle, base::TimeDelta(), group, request->net_log()); diff --git a/net/socket/client_socket_pool_base_unittest.cc b/net/socket/client_socket_pool_base_unittest.cc index c6092d7..803966b 100644 --- a/net/socket/client_socket_pool_base_unittest.cc +++ b/net/socket/client_socket_pool_base_unittest.cc @@ -2928,6 +2928,13 @@ TEST_F(ClientSocketPoolBaseTest, RequestSocketsSynchronousError) { BoundNetLog()); ASSERT_FALSE(pool_->HasGroup("a")); + + connect_job_factory_->set_job_type( + TestConnectJob::kMockAdditionalErrorStateJob); + pool_->RequestSockets("a", ¶ms_, kDefaultMaxSocketsPerGroup, + BoundNetLog()); + + ASSERT_FALSE(pool_->HasGroup("a")); } TEST_F(ClientSocketPoolBaseTest, RequestSocketsMultipleTimesDoesNothing) { |