| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/socket/transport_client_socket_pool.h" | 5 #include "net/socket/transport_client_socket_pool.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 static base::LazyInstance<base::TimeTicks>::Leaky | 56 static base::LazyInstance<base::TimeTicks>::Leaky |
| 57 g_last_connect_time = LAZY_INSTANCE_INITIALIZER; | 57 g_last_connect_time = LAZY_INSTANCE_INITIALIZER; |
| 58 | 58 |
| 59 TransportSocketParams::TransportSocketParams( | 59 TransportSocketParams::TransportSocketParams( |
| 60 const HostPortPair& host_port_pair, | 60 const HostPortPair& host_port_pair, |
| 61 bool disable_resolver_cache, | 61 bool disable_resolver_cache, |
| 62 bool ignore_limits, | 62 bool ignore_limits, |
| 63 const OnHostResolutionCallback& host_resolution_callback) | 63 const OnHostResolutionCallback& host_resolution_callback) |
| 64 : destination_(host_port_pair), | 64 : destination_(host_port_pair), |
| 65 ignore_limits_(ignore_limits), | 65 ignore_limits_(ignore_limits), |
| 66 host_resolution_callback_(host_resolution_callback) { | 66 host_resolution_callback_(host_resolution_callback), |
| 67 use_tcp_fastopen_(false) { |
| 67 if (disable_resolver_cache) | 68 if (disable_resolver_cache) |
| 68 destination_.set_allow_cached_response(false); | 69 destination_.set_allow_cached_response(false); |
| 69 } | 70 } |
| 70 | 71 |
| 71 TransportSocketParams::~TransportSocketParams() {} | 72 TransportSocketParams::~TransportSocketParams() {} |
| 72 | 73 |
| 73 // TransportConnectJobs will time out after this many seconds. Note this is | 74 // TransportConnectJobs will time out after this many seconds. Note this is |
| 74 // the total time, including both host resolution and TCP connect() times. | 75 // the total time, including both host resolution and TCP connect() times. |
| 75 // | 76 // |
| 76 // TODO(eroman): The use of this constant needs to be re-evaluated. The time | 77 // TODO(eroman): The use of this constant needs to be re-evaluated. The time |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 interval_between_connects_ = CONNECT_INTERVAL_LE_20MS; | 255 interval_between_connects_ = CONNECT_INTERVAL_LE_20MS; |
| 255 else | 256 else |
| 256 interval_between_connects_ = CONNECT_INTERVAL_GT_20MS; | 257 interval_between_connects_ = CONNECT_INTERVAL_GT_20MS; |
| 257 } | 258 } |
| 258 | 259 |
| 259 helper_.set_next_state( | 260 helper_.set_next_state( |
| 260 TransportConnectJobHelper::STATE_TRANSPORT_CONNECT_COMPLETE); | 261 TransportConnectJobHelper::STATE_TRANSPORT_CONNECT_COMPLETE); |
| 261 transport_socket_ = | 262 transport_socket_ = |
| 262 helper_.client_socket_factory()->CreateTransportClientSocket( | 263 helper_.client_socket_factory()->CreateTransportClientSocket( |
| 263 helper_.addresses(), net_log().net_log(), net_log().source()); | 264 helper_.addresses(), net_log().net_log(), net_log().source()); |
| 265 |
| 266 if (helper_.params()->use_tcp_fastopen()) |
| 267 transport_socket_->EnableTCPFastOpen(); |
| 268 |
| 264 int rv = transport_socket_->Connect(helper_.on_io_complete()); | 269 int rv = transport_socket_->Connect(helper_.on_io_complete()); |
| 265 if (rv == ERR_IO_PENDING && | 270 if (rv == ERR_IO_PENDING && |
| 266 helper_.addresses().front().GetFamily() == ADDRESS_FAMILY_IPV6 && | 271 helper_.addresses().front().GetFamily() == ADDRESS_FAMILY_IPV6 && |
| 267 !AddressListOnlyContainsIPv6(helper_.addresses())) { | 272 !AddressListOnlyContainsIPv6(helper_.addresses())) { |
| 268 fallback_timer_.Start( | 273 fallback_timer_.Start( |
| 269 FROM_HERE, | 274 FROM_HERE, |
| 270 base::TimeDelta::FromMilliseconds( | 275 base::TimeDelta::FromMilliseconds( |
| 271 TransportConnectJobHelper::kIPv6FallbackTimerInMs), | 276 TransportConnectJobHelper::kIPv6FallbackTimerInMs), |
| 272 this, | 277 this, |
| 273 &TransportConnectJob::DoIPv6FallbackTransportConnect); | 278 &TransportConnectJob::DoIPv6FallbackTransportConnect); |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 535 HigherLayeredPool* higher_pool) { | 540 HigherLayeredPool* higher_pool) { |
| 536 base_.AddHigherLayeredPool(higher_pool); | 541 base_.AddHigherLayeredPool(higher_pool); |
| 537 } | 542 } |
| 538 | 543 |
| 539 void TransportClientSocketPool::RemoveHigherLayeredPool( | 544 void TransportClientSocketPool::RemoveHigherLayeredPool( |
| 540 HigherLayeredPool* higher_pool) { | 545 HigherLayeredPool* higher_pool) { |
| 541 base_.RemoveHigherLayeredPool(higher_pool); | 546 base_.RemoveHigherLayeredPool(higher_pool); |
| 542 } | 547 } |
| 543 | 548 |
| 544 } // namespace net | 549 } // namespace net |
| OLD | NEW |