mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
CURLOPT_TCP_NODELAY: now enabled by default
After a few wasted hours hunting down the reason for slowness during a TLS handshake that turned out to be because of TCP_NODELAY not being set, I think we have enough motivation to toggle the default for this option. We now enable TCP_NODELAY by default and allow applications to switch it off. This also makes --tcp-nodelay unnecessary, but --no-tcp-nodelay can be used to disable it. Thanks-to: Tim Rühsen Bug: https://curl.haxx.se/mail/lib-2016-06/0143.html
This commit is contained in:
parent
edeabf741f
commit
4732ca5724
@ -5,7 +5,7 @@
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
@ -20,7 +20,7 @@
|
||||
.\" *
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH CURLOPT_TCP_NODELAY 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
|
||||
.TH CURLOPT_TCP_NODELAY 3 "30 Jun 2016" "libcurl 7.50.0" "curl_easy_setopt options"
|
||||
.SH NAME
|
||||
CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
|
||||
.SH SYNOPSIS
|
||||
@ -29,8 +29,8 @@ CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
|
||||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay);
|
||||
.SH DESCRIPTION
|
||||
Pass a long specifying whether the TCP_NODELAY option is to be set or cleared
|
||||
(1 = set, 0 = clear). The option is cleared by default. This will have no
|
||||
effect after the connection has been established.
|
||||
(1 = set, 0 = clear). The option is set by default. This will have no effect
|
||||
after the connection has been established.
|
||||
|
||||
Setting this option will disable TCP's Nagle algorithm. The purpose of this
|
||||
algorithm is to try to minimize the number of small packets on the network
|
||||
@ -43,13 +43,13 @@ need to be sent without delay. This is less efficient than sending larger
|
||||
amounts of data at a time, and can contribute to congestion on the network if
|
||||
overdone.
|
||||
.SH DEFAULT
|
||||
0
|
||||
1
|
||||
.SH PROTOCOLS
|
||||
All
|
||||
.SH EXAMPLE
|
||||
TODO
|
||||
.SH AVAILABILITY
|
||||
Always
|
||||
Always. The default was changed to 1 from 0 in 7.50.2.
|
||||
.SH RETURN VALUE
|
||||
Returns CURLE_OK
|
||||
.SH "SEE ALSO"
|
||||
|
@ -1849,10 +1849,6 @@ CURLcode Curl_http2_setup(struct connectdata *conn)
|
||||
infof(conn->data, "Connection state changed (HTTP/2 confirmed)\n");
|
||||
Curl_multi_connchanged(conn->data->multi);
|
||||
|
||||
/* switch on TCP_NODELAY as we need to send off packets without delay for
|
||||
maximum throughput */
|
||||
Curl_tcpnodelay(conn, conn->sock[FIRSTSOCKET]);
|
||||
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
|
@ -602,6 +602,7 @@ CURLcode Curl_init_userdefined(struct UserDefined *set)
|
||||
set->tcp_keepintvl = 60;
|
||||
set->tcp_keepidle = 60;
|
||||
set->tcp_fastopen = FALSE;
|
||||
set->tcp_nodelay = TRUE;
|
||||
|
||||
set->ssl_enable_npn = TRUE;
|
||||
set->ssl_enable_alpn = TRUE;
|
||||
|
@ -5,7 +5,7 @@
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
@ -41,6 +41,7 @@ void config_init(struct OperationConfig* config)
|
||||
CURLPROTO_SMBS);
|
||||
config->proto_redir_present = FALSE;
|
||||
config->proto_default = NULL;
|
||||
config->tcp_nodelay = TRUE; /* enabled by default */
|
||||
}
|
||||
|
||||
static void free_config_fields(struct OperationConfig *config)
|
||||
|
@ -792,8 +792,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
|
||||
set_binmode(stdout);
|
||||
}
|
||||
|
||||
if(config->tcp_nodelay)
|
||||
my_setopt(curl, CURLOPT_TCP_NODELAY, 1L);
|
||||
if(!config->tcp_nodelay)
|
||||
my_setopt(curl, CURLOPT_TCP_NODELAY, 0L);
|
||||
|
||||
if(config->tcp_fastopen)
|
||||
my_setopt(curl, CURLOPT_TCP_FASTOPEN, 1L);
|
||||
|
@ -5,7 +5,7 @@
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
@ -157,6 +157,7 @@ static const NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
|
||||
NV1(CURLOPT_SSL_VERIFYHOST, 1),
|
||||
NV1(CURLOPT_SSL_ENABLE_NPN, 1),
|
||||
NV1(CURLOPT_SSL_ENABLE_ALPN, 1),
|
||||
NV1(CURLOPT_TCP_NODELAY, 1),
|
||||
NVEND
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user