summaryrefslogtreecommitdiffstats
path: root/net/socket/client_socket_pool_base.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/socket/client_socket_pool_base.cc')
-rw-r--r--net/socket/client_socket_pool_base.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc
index bfe8405..d966555 100644
--- a/net/socket/client_socket_pool_base.cc
+++ b/net/socket/client_socket_pool_base.cc
@@ -132,8 +132,10 @@ int ClientSocketPoolBaseHelper::RequestSocket(
DecrementIdleCount();
if (idle_socket.socket->IsConnectedAndIdle()) {
// We found one we can reuse!
+ base::TimeDelta idle_time =
+ base::TimeTicks::Now() - idle_socket.start_time;
HandOutSocket(
- idle_socket.socket, idle_socket.used, handle, &group);
+ idle_socket.socket, idle_socket.used, handle, idle_time, &group);
return OK;
}
delete idle_socket.socket;
@@ -147,7 +149,7 @@ int ClientSocketPoolBaseHelper::RequestSocket(
int rv = connect_job->Connect();
if (rv == OK) {
HandOutSocket(connect_job->ReleaseSocket(), false /* not reused */,
- handle, &group);
+ handle, base::TimeDelta(), &group);
} else if (rv == ERR_IO_PENDING) {
connecting_socket_count_++;
@@ -395,7 +397,8 @@ void ClientSocketPoolBaseHelper::OnConnectJobComplete(
scoped_ptr<const Request> r(group.pending_requests.front());
group.pending_requests.pop_front();
HandOutSocket(
- socket.release(), false /* unused socket */, r->handle(), &group);
+ socket.release(), false /* unused socket */, r->handle(),
+ base::TimeDelta(), &group);
r->callback()->Run(result);
} else {
AddIdleSocket(socket.release(), false /* unused socket */, &group);
@@ -431,7 +434,8 @@ void ClientSocketPoolBaseHelper::OnConnectJobComplete(
MaybeOnAvailableSocketSlot(group_name);
} else {
DCHECK(socket.get());
- HandOutSocket(socket.release(), false /* not reused */, handle, &group);
+ HandOutSocket(socket.release(), false /* not reused */, handle,
+ base::TimeDelta(), &group);
callback->Run(result);
}
}
@@ -520,10 +524,12 @@ void ClientSocketPoolBaseHelper::HandOutSocket(
ClientSocket* socket,
bool reused,
ClientSocketHandle* handle,
+ base::TimeDelta idle_time,
Group* group) {
DCHECK(socket);
handle->set_socket(socket);
handle->set_is_reused(reused);
+ handle->set_idle_time(idle_time);
handed_out_socket_count_++;
group->active_socket_count++;