Chromium Code Reviews| Index: net/socket/transport_client_socket_pool.cc |
| diff --git a/net/socket/transport_client_socket_pool.cc b/net/socket/transport_client_socket_pool.cc |
| index eac2868bde74156109d028baa8f7c696c69cfae7..37c0e04725890b8f123ed893f041828f09c8ce06 100644 |
| --- a/net/socket/transport_client_socket_pool.cc |
| +++ b/net/socket/transport_client_socket_pool.cc |
| @@ -201,10 +201,14 @@ TransportConnectJob::TransportConnectJob( |
| HostResolver* host_resolver, |
| Delegate* delegate, |
| NetLog* net_log) |
| - : ConnectJob(group_name, timeout_duration, priority, delegate, |
| + : ConnectJob(group_name, |
| + timeout_duration, |
| + priority, |
| + delegate, |
| BoundNetLog::Make(net_log, NetLog::SOURCE_CONNECT_JOB)), |
| helper_(params, client_socket_factory, host_resolver, &connect_timing_), |
| - interval_between_connects_(CONNECT_INTERVAL_GT_20MS) { |
| + interval_between_connects_(CONNECT_INTERVAL_GT_20MS), |
| + connect_result_(OK) { |
|
Randy Smith (Not in Mondays)
2015/04/23 19:04:09
Should there be an initialization for resolve_resu
Deprecated (see juliatuttle)
2015/04/23 21:04:16
Done.
|
| helper_.SetOnIOComplete(this); |
| } |
| @@ -228,6 +232,23 @@ LoadState TransportConnectJob::GetLoadState() const { |
| return LOAD_STATE_IDLE; |
| } |
| +void TransportConnectJob::GetAdditionalErrorState(ClientSocketHandle* handle) { |
| + // If hostname resolution failed, record an empty endpoint and the result. |
| + // If the actual socket Connect call failed, record the result and the last |
| + // address attempted. |
| + // TODO(ttuttle): Plumb into the socket layer and record *all* attempts. |
| + ConnectionAttempts attempts; |
| + if (resolve_result_ != OK) { |
| + DCHECK_EQ(0u, helper_.addresses().size()); |
| + attempts.push_back(ConnectionAttempt(IPEndPoint(), resolve_result_)); |
| + } else if (connect_result_ != OK) { |
| + DCHECK_LT(0u, helper_.addresses().size()); |
| + attempts.push_back( |
| + ConnectionAttempt(helper_.addresses().back(), connect_result_)); |
| + } |
| + handle->set_connection_attempts(attempts); |
| +} |
| + |
| // static |
| void TransportConnectJob::MakeAddressListStartWithIPv4(AddressList* list) { |
| for (AddressList::iterator i = list->begin(); i != list->end(); ++i) { |
| @@ -248,6 +269,7 @@ int TransportConnectJob::DoResolveHost() { |
| } |
| int TransportConnectJob::DoResolveHostComplete(int result) { |
| + resolve_result_ = result; |
| return helper_.DoResolveHostComplete(result, net_log()); |
| } |
| @@ -360,6 +382,8 @@ int TransportConnectJob::DoTransportConnectComplete(int result) { |
| fallback_addresses_.reset(); |
| } |
| + connect_result_ = result; |
| + |
| return result; |
| } |