summaryrefslogtreecommitdiffstats
path: root/net/socket/transport_client_socket_pool.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/socket/transport_client_socket_pool.cc')
-rw-r--r--net/socket/transport_client_socket_pool.cc23
1 files changed, 14 insertions, 9 deletions
diff --git a/net/socket/transport_client_socket_pool.cc b/net/socket/transport_client_socket_pool.cc
index 84e89c8..ae394f5 100644
--- a/net/socket/transport_client_socket_pool.cc
+++ b/net/socket/transport_client_socket_pool.cc
@@ -163,6 +163,8 @@ int TransportConnectJob::DoLoop(int result) {
int TransportConnectJob::DoResolveHost() {
next_state_ = STATE_RESOLVE_HOST_COMPLETE;
+ connect_timing_.dns_start = base::TimeTicks::Now();
+
return resolver_.Resolve(
params_->destination(), &addresses_,
base::Bind(&TransportConnectJob::OnIOComplete, base::Unretained(this)),
@@ -170,6 +172,11 @@ int TransportConnectJob::DoResolveHost() {
}
int TransportConnectJob::DoResolveHostComplete(int result) {
+ connect_timing_.dns_end = base::TimeTicks::Now();
+ // Overwrite connection start time, since for connections that do not go
+ // through proxies, |connect_start| should not include dns lookup time.
+ connect_timing_.connect_start = connect_timing_.dns_end;
+
if (result == OK) {
// Invoke callback, and abort if it fails.
if (!params_->host_resolution_callback().is_null())
@@ -185,7 +192,6 @@ int TransportConnectJob::DoTransportConnect() {
next_state_ = STATE_TRANSPORT_CONNECT_COMPLETE;
transport_socket_.reset(client_socket_factory_->CreateTransportClientSocket(
addresses_, net_log().net_log(), net_log().source()));
- connect_start_time_ = base::TimeTicks::Now();
int rv = transport_socket_->Connect(
base::Bind(&TransportConnectJob::OnIOComplete, base::Unretained(this)));
if (rv == ERR_IO_PENDING &&
@@ -201,10 +207,10 @@ int TransportConnectJob::DoTransportConnect() {
int TransportConnectJob::DoTransportConnectComplete(int result) {
if (result == OK) {
bool is_ipv4 = addresses_.front().GetFamily() == ADDRESS_FAMILY_IPV4;
- DCHECK(connect_start_time_ != base::TimeTicks());
- DCHECK(start_time_ != base::TimeTicks());
+ DCHECK(!connect_timing_.connect_start.is_null());
+ DCHECK(!connect_timing_.dns_start.is_null());
base::TimeTicks now = base::TimeTicks::Now();
- base::TimeDelta total_duration = now - start_time_;
+ base::TimeDelta total_duration = now - connect_timing_.dns_start;
UMA_HISTOGRAM_CUSTOM_TIMES(
"Net.DNS_Resolution_And_TCP_Connection_Latency2",
total_duration,
@@ -212,7 +218,7 @@ int TransportConnectJob::DoTransportConnectComplete(int result) {
base::TimeDelta::FromMinutes(10),
100);
- base::TimeDelta connect_duration = now - connect_start_time_;
+ base::TimeDelta connect_duration = now - connect_timing_.connect_start;
UMA_HISTOGRAM_CUSTOM_TIMES("Net.TCP_Connection_Latency",
connect_duration,
base::TimeDelta::FromMilliseconds(1),
@@ -288,10 +294,10 @@ void TransportConnectJob::DoIPv6FallbackTransportConnectComplete(int result) {
DCHECK(fallback_addresses_.get());
if (result == OK) {
- DCHECK(fallback_connect_start_time_ != base::TimeTicks());
- DCHECK(start_time_ != base::TimeTicks());
+ DCHECK(!fallback_connect_start_time_.is_null());
+ DCHECK(!connect_timing_.dns_start.is_null());
base::TimeTicks now = base::TimeTicks::Now();
- base::TimeDelta total_duration = now - start_time_;
+ base::TimeDelta total_duration = now - connect_timing_.dns_start;
UMA_HISTOGRAM_CUSTOM_TIMES(
"Net.DNS_Resolution_And_TCP_Connection_Latency2",
total_duration,
@@ -324,7 +330,6 @@ void TransportConnectJob::DoIPv6FallbackTransportConnectComplete(int result) {
int TransportConnectJob::ConnectInternal() {
next_state_ = STATE_RESOLVE_HOST;
- start_time_ = base::TimeTicks::Now();
return DoLoop(OK);
}