mirror of
https://github.com/curl/curl.git
synced 2026-08-24 16:03:37 +03:00
url: Add option CURLOPT_HAPPY_EYEBALLS_TIMEOUT
- Add new option CURLOPT_HAPPY_EYEBALLS_TIMEOUT to set libcurl's happy eyeball timeout value. - Add new optval macro CURL_HET_DEFAULT to represent the default happy eyeballs timeout value (currently 200 ms). - Add new tool option --happy-eyeballs-timeout-ms to expose CURLOPT_HAPPY_EYEBALLS_TIMEOUT. The -ms suffix is used because the other -timeout options in the tool expect seconds not milliseconds. Closes https://github.com/curl/curl/pull/2260
This commit is contained in:
parent
73050fb6ae
commit
2427d94c6d
18 changed files with 125 additions and 5 deletions
|
|
@ -12,7 +12,9 @@ DPAGES = abstract-unix-socket.d anyauth.d append.d basic.d cacert.d capath.d cer
|
|||
form.d form-string.d ftp-account.d ftp-alternative-to-user.d \
|
||||
ftp-create-dirs.d ftp-method.d ftp-pasv.d ftp-port.d ftp-pret.d \
|
||||
ftp-skip-pasv-ip.d ftp-ssl-ccc.d ftp-ssl-ccc-mode.d ftp-ssl-control.d \
|
||||
get.d globoff.d head.d header.d help.d hostpubmd5.d http1.0.d \
|
||||
get.d globoff.d \
|
||||
happy-eyeballs-timeout-ms.d \
|
||||
head.d header.d help.d hostpubmd5.d http1.0.d \
|
||||
http1.1.d http2.d http2-prior-knowledge.d ignore-content-length.d \
|
||||
include.d insecure.d interface.d ipv4.d ipv6.d junk-session-cookies.d \
|
||||
keepalive-time.d key.d key-type.d krb.d libcurl.d limit-rate.d \
|
||||
|
|
|
|||
17
docs/cmdline-opts/happy-eyeballs-timeout-ms.d
Normal file
17
docs/cmdline-opts/happy-eyeballs-timeout-ms.d
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
Long: happy-eyeballs-timeout-ms
|
||||
Arg: <milliseconds>
|
||||
Help: How long to wait in milliseconds for IPv6 before trying IPv4
|
||||
Added: 7.59.0
|
||||
---
|
||||
Happy eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
|
||||
addresses for dual-stack hosts, preferring IPv6 first for the number of
|
||||
milliseconds. If the IPv6 address cannot be connected to within that time then
|
||||
a connection attempt is made to the IPv4 address in parallel. The first
|
||||
connection to be established is the one that is used.
|
||||
|
||||
The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says
|
||||
"It is RECOMMENDED that connection attempts be paced 150-250 ms apart to
|
||||
balance human factors against network load." libcurl currently defaults to
|
||||
200 ms. Firefox and Chrome currently default to 300 ms.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
|
|
@ -577,6 +577,8 @@ Mode for creating new remote directories. See \fICURLOPT_NEW_DIRECTORY_PERMS(3)\
|
|||
.SH TELNET OPTIONS
|
||||
.IP CURLOPT_TELNETOPTIONS
|
||||
TELNET options. See \fICURLOPT_TELNETOPTIONS(3)\fP
|
||||
.IP CURLOPT_HAPPY_EYEBALLS_TIMEOUT
|
||||
Timeout for happy eyeballs. See \fICURLOPT_HAPPY_EYEBALLS_TIMEOUT(3)\fP
|
||||
.SH RETURN VALUE
|
||||
\fICURLE_OK\fP (zero) means that the option was set properly, non-zero means an
|
||||
error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors(3)\fP
|
||||
|
|
|
|||
59
docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT.3
Normal file
59
docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT.3
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
.\" **************************************************************************
|
||||
.\" * _ _ ____ _
|
||||
.\" * Project ___| | | | _ \| |
|
||||
.\" * / __| | | | |_) | |
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2015, 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
|
||||
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
.\" *
|
||||
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
.\" * copies of the Software, and permit persons to whom the Software is
|
||||
.\" * furnished to do so, under the terms of the COPYING file.
|
||||
.\" *
|
||||
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
.\" * KIND, either express or implied.
|
||||
.\" *
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT 3 "1 Feb 2018" "libcurl 7.59.0" "curl_easy_setopt options"
|
||||
.SH NAME
|
||||
CURLOPT_HAPPY_EYEBALLS_TIMEOUT \- head start for ipv6 for happy eyeballs
|
||||
.SH SYNOPSIS
|
||||
#include <curl/curl.h>
|
||||
|
||||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPPY_EYEBALLS_TIMEOUT, long timeout);
|
||||
.SH DESCRIPTION
|
||||
Happy eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
|
||||
addresses for dual-stack hosts, preferring IPv6 first for \fItimeout\fP
|
||||
milliseconds. If the IPv6 address cannot be connected to within that time then
|
||||
a connection attempt is made to the IPv4 address in parallel. The first
|
||||
connection to be established is the one that is used.
|
||||
|
||||
The range of suggested useful values for \fItimeout\fP is limited. Happy
|
||||
Eyeballs RFC 6555 says "It is RECOMMENDED that connection attempts be paced
|
||||
150-250 ms apart to balance human factors against network load." libcurl
|
||||
currently defaults to 200 ms. Firefox and Chrome currently default to 300 ms.
|
||||
.SH DEFAULT
|
||||
CURL_HET_DEFAULT (currently defined as 200L)
|
||||
.SH EXAMPLE
|
||||
.nf
|
||||
CURL *curl = curl_easy_init();
|
||||
if(curl) {
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||
curl_easy_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT, 300L);
|
||||
|
||||
curl_easy_perform(curl);
|
||||
|
||||
/* always cleanup */
|
||||
curl_easy_cleanup(curl);
|
||||
}
|
||||
.fi
|
||||
.SH AVAILABILITY
|
||||
Added in 7.59.0
|
||||
.SH RETURN VALUE
|
||||
Returns CURLE_OK
|
||||
|
|
@ -136,6 +136,7 @@ man_MANS = \
|
|||
CURLOPT_FTP_USE_EPSV.3 \
|
||||
CURLOPT_FTP_USE_PRET.3 \
|
||||
CURLOPT_GSSAPI_DELEGATION.3 \
|
||||
CURLOPT_HAPPY_EYEBALLS_TIMEOUT.3 \
|
||||
CURLOPT_HEADER.3 \
|
||||
CURLOPT_HEADERDATA.3 \
|
||||
CURLOPT_HEADERFUNCTION.3 \
|
||||
|
|
|
|||
|
|
@ -403,6 +403,7 @@ CURLOPT_FTP_USE_EPRT 7.10.5
|
|||
CURLOPT_FTP_USE_EPSV 7.9.2
|
||||
CURLOPT_FTP_USE_PRET 7.20.0
|
||||
CURLOPT_GSSAPI_DELEGATION 7.22.0
|
||||
CURLOPT_HAPPY_EYEBALLS_TIMEOUT 7.59.0
|
||||
CURLOPT_HEADER 7.1
|
||||
CURLOPT_HEADERDATA 7.10
|
||||
CURLOPT_HEADERFUNCTION 7.7.2
|
||||
|
|
@ -741,6 +742,7 @@ CURL_GLOBAL_DEFAULT 7.8
|
|||
CURL_GLOBAL_NOTHING 7.8
|
||||
CURL_GLOBAL_SSL 7.8
|
||||
CURL_GLOBAL_WIN32 7.8.1
|
||||
CURL_HET_DEFAULT 7.59.0
|
||||
CURL_HTTPPOST_BUFFER 7.46.0
|
||||
CURL_HTTPPOST_CALLBACK 7.46.0
|
||||
CURL_HTTPPOST_FILENAME 7.46.0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue