mirror of
https://github.com/curl/curl.git
synced 2026-08-24 11:43:38 +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
|
|
@ -42,6 +42,7 @@ void config_init(struct OperationConfig* config)
|
|||
config->proto_redir_present = FALSE;
|
||||
config->proto_default = NULL;
|
||||
config->tcp_nodelay = TRUE; /* enabled by default */
|
||||
config->happy_eyeballs_timeout_ms = CURL_HET_DEFAULT;
|
||||
}
|
||||
|
||||
static void free_config_fields(struct OperationConfig *config)
|
||||
|
|
|
|||
|
|
@ -250,6 +250,8 @@ struct OperationConfig {
|
|||
curl_error synthetic_error; /* if non-zero, it overrides any libcurl
|
||||
error */
|
||||
bool ssh_compression; /* enable/disable SSH compression */
|
||||
long happy_eyeballs_timeout_ms; /* happy eyeballs timeout in milliseconds.
|
||||
0 is valid. default: CURL_HET_DEFAULT. */
|
||||
struct GlobalConfig *global;
|
||||
struct OperationConfig *prev;
|
||||
struct OperationConfig *next; /* Always last in the struct */
|
||||
|
|
|
|||
|
|
@ -190,6 +190,7 @@ static const struct LongShort aliases[]= {
|
|||
{"$X", "tls-max", ARG_STRING},
|
||||
{"$Y", "suppress-connect-headers", ARG_BOOL},
|
||||
{"$Z", "compressed-ssh", ARG_BOOL},
|
||||
{"$~", "happy-eyeballs-timeout-ms", ARG_STRING},
|
||||
{"0", "http1.0", ARG_NONE},
|
||||
{"01", "http1.1", ARG_NONE},
|
||||
{"02", "http2", ARG_NONE},
|
||||
|
|
@ -1111,6 +1112,12 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
case 'Z': /* --compressed-ssh */
|
||||
config->ssh_compression = toggle;
|
||||
break;
|
||||
case '~': /* --happy-eyeballs-timeout-ms */
|
||||
err = str2unum(&config->happy_eyeballs_timeout_ms, nextarg);
|
||||
if(err)
|
||||
return err;
|
||||
/* 0 is a valid value for this timeout */
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case '#': /* --progress-bar */
|
||||
|
|
|
|||
|
|
@ -160,6 +160,8 @@ static const struct helptxt helptext[] = {
|
|||
"Put the post data in the URL and use GET"},
|
||||
{"-g, --globoff",
|
||||
"Disable URL sequences and ranges using {} and []"},
|
||||
{" --happy-eyeballs-timeout-ms",
|
||||
"How long to wait in milliseconds for IPv6 before trying IPv4"},
|
||||
{"-I, --head",
|
||||
"Show document info only"},
|
||||
{"-H, --header <header/@file>",
|
||||
|
|
|
|||
|
|
@ -1440,6 +1440,11 @@ static CURLcode operate_do(struct GlobalConfig *global,
|
|||
if(config->tftp_no_options)
|
||||
my_setopt(curl, CURLOPT_TFTP_NO_OPTIONS, 1L);
|
||||
|
||||
/* new in 7.59.0 */
|
||||
if(config->happy_eyeballs_timeout_ms != CURL_HET_DEFAULT)
|
||||
my_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT,
|
||||
config->happy_eyeballs_timeout_ms);
|
||||
|
||||
/* initialize retry vars for loop below */
|
||||
retry_sleep_default = (config->retry_delay) ?
|
||||
config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue