Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(392)

Unified Diff: net/socket/transport_client_socket_pool.cc

Issue 451383002: Plumbing for TCP FastOpen for SSL sockets. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased to master. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 &&

Powered by Google App Engine
This is Rietveld 408576698