CURLOPT_TCP_NODELAY(3) Introduction to Library Functions
NAME
CURLOPT_TCP_NODELAY - the TCP_NODELAY option
SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay);
DESCRIPTION
Pass a long specifying whether the
TCP_NODELAY option is to be set or
cleared (1L = set, 0 = clear). The option is set by default. This has
no effect after the connection has been established.
Setting this option to 1L disables the Nagle algorithm on connections
created using this handle. The purpose of this algorithm is to
minimize the number of small packets on the network (where "small
packets" means TCP segments less than the Maximum Segment Size for
the network).
Maximizing the amount of data sent per TCP segment is good because it
amortizes the overhead of the send. However, in some cases small
segments may 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.
DEFAULT
1
PROTOCOLS
This functionality affects tcp only
EXAMPLE
int main(void)
{
CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
/* leave Nagle enabled */
curl_easy_setopt(curl, CURLOPT_TCP_NODELAY, 0);
curl_easy_perform(curl);
}
}
HISTORY
The default was changed to 1 from 0 in 7.50.2.
AVAILABILITY
Added in curl 7.11.2
RETURN VALUE
curl_easy_setopt(3) returns a CURLcode indicating success or error.
CURLE_OK (0) means everything was OK, non-zero means an error
occurred, see
libcurl-errors(3).
SEE ALSO
CURLOPT_BUFFERSIZE(3),
CURLOPT_SOCKOPTFUNCTION(3),
CURLOPT_TCP_KEEPALIVE(3)libcurl 2025-02-25 CURLOPT_TCP_NODELAY(3)