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 7527eca52edf547d3e75a102bf8b79374ba846a8..0ad63aa17442b89d21bef59cce06dfeb3a48ebaa 100644 |
--- a/net/socket/transport_client_socket_pool.cc |
+++ b/net/socket/transport_client_socket_pool.cc |
@@ -25,6 +25,8 @@ |
#include "net/socket/tcp_client_socket.h" |
using base::TimeDelta; |
+extern bool g_tcp_fastopen_user_enabled; |
+extern bool g_tcp_fastopen_supported; |
mmenke
2014/09/05 19:36:42
These values don't exist on windows. Also, think
|
namespace net { |
@@ -60,12 +62,22 @@ TransportSocketParams::TransportSocketParams( |
const HostPortPair& host_port_pair, |
bool disable_resolver_cache, |
bool ignore_limits, |
- const OnHostResolutionCallback& host_resolution_callback) |
+ const OnHostResolutionCallback& host_resolution_callback, |
+ AutoConnectWithWritePolicy auto_connect_with_write_if_supported) |
: destination_(host_port_pair), |
ignore_limits_(ignore_limits), |
- host_resolution_callback_(host_resolution_callback) { |
+ host_resolution_callback_(host_resolution_callback), |
+ auto_connect_with_write_(auto_connect_with_write_if_supported) { |
if (disable_resolver_cache) |
destination_.set_allow_cached_response(false); |
+ // Auto-connect currently translates to only TCP Fast Open. |
+ // Enable TCP FastOpen if user wants it and system supports it. |
+ if (!g_tcp_fastopen_supported) |
+ auto_connect_with_write_ = AUTO_CONNECT_DISABLED; |
mmenke
2014/09/05 19:36:42
This isn't needed - we already have a check that i
|
+ else |
+ if (g_tcp_fastopen_user_enabled && |
+ auto_connect_with_write_ == AUTO_CONNECT_USE_DEFAULT) |
+ auto_connect_with_write_ = AUTO_CONNECT_ENABLED; |
} |
TransportSocketParams::~TransportSocketParams() {} |
@@ -261,6 +273,10 @@ int TransportConnectJob::DoTransportConnect() { |
transport_socket_ = |
helper_.client_socket_factory()->CreateTransportClientSocket( |
helper_.addresses(), net_log().net_log(), net_log().source()); |
+ |
+ if (helper_.params()->auto_connect_with_write() == AUTO_CONNECT_ENABLED) |
+ transport_socket_->EnableTCPFastOpen(); |
+ |
int rv = transport_socket_->Connect(helper_.on_io_complete()); |
if (rv == ERR_IO_PENDING && |
helper_.addresses().front().GetFamily() == ADDRESS_FAMILY_IPV6 && |