mirror of
https://github.com/curl/curl.git
synced 2024-11-21 01:16:58 +08:00
curl: add --parallel-immediate
Starting with this change when doing parallel transfers, without this option set, curl will prefer to create new transfers multiplexed on an existing connection rather than creating a brand new one. --parallel-immediate can be set to tell curl to prefer to use new connections rather than to wait and try to multiplex. libcurl-wise, this means that curl will set CURLOPT_PIPEWAIT by default on parallel transfers. Suggested-by: Tom van der Woerdt Closes #4500
This commit is contained in:
parent
8487734e8b
commit
215baa74f7
@ -103,9 +103,10 @@ DPAGES = \
|
||||
ntlm.d ntlm-wb.d \
|
||||
oauth2-bearer.d \
|
||||
output.d \
|
||||
parallel-immediate.d \
|
||||
parallel-max.d \
|
||||
parallel.d \
|
||||
pass.d \
|
||||
parallel-max.d \
|
||||
path-as-is.d \
|
||||
pinnedpubkey.d \
|
||||
post301.d \
|
||||
|
9
docs/cmdline-opts/parallel-immediate.d
Normal file
9
docs/cmdline-opts/parallel-immediate.d
Normal file
@ -0,0 +1,9 @@
|
||||
Long: parallel-immediate
|
||||
Help: Do not wait for multiplexing (with --parallel)
|
||||
Added: 7.68.0
|
||||
See-also: parallel parallel-max
|
||||
---
|
||||
When doing parallel transfers, this option will instruct curl that it should
|
||||
rather prefer opening up more connections in parallel at once rather than
|
||||
waiting to see if new transfers can be added as multiplexed streams on another
|
||||
connection.
|
@ -300,6 +300,7 @@ struct GlobalConfig {
|
||||
#endif
|
||||
bool parallel;
|
||||
long parallel_max;
|
||||
bool parallel_connect;
|
||||
struct OperationConfig *first;
|
||||
struct OperationConfig *current;
|
||||
struct OperationConfig *last; /* Always last in the struct */
|
||||
|
@ -321,6 +321,7 @@ static const struct LongShort aliases[]= {
|
||||
{"z", "time-cond", ARG_STRING},
|
||||
{"Z", "parallel", ARG_BOOL},
|
||||
{"Zb", "parallel-max", ARG_STRING},
|
||||
{"Zc", "parallel-immediate", ARG_BOOL},
|
||||
{"#", "progress-bar", ARG_BOOL},
|
||||
{"#m", "progress-meter", ARG_BOOL},
|
||||
{":", "next", ARG_NONE},
|
||||
@ -2154,6 +2155,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
||||
(global->parallel_max < 1))
|
||||
global->parallel_max = PARALLEL_DEFAULT;
|
||||
break;
|
||||
case 'c': /* --parallel-connect */
|
||||
global->parallel_connect = toggle;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'z': /* time condition coming up */
|
||||
|
@ -279,6 +279,8 @@ static const struct helptxt helptext[] = {
|
||||
"Write to file instead of stdout"},
|
||||
{"-Z, --parallel",
|
||||
"Perform transfers in parallel"},
|
||||
{" --parallel-immediate",
|
||||
"Do not wait for multiplexing (with --parallel)"},
|
||||
{" --parallel-max",
|
||||
"Maximum concurrency for parallel transfers"},
|
||||
{" --pass <phrase>",
|
||||
|
@ -1976,6 +1976,10 @@ static CURLcode add_parallel_transfers(struct GlobalConfig *global,
|
||||
if(result)
|
||||
break;
|
||||
|
||||
/* parallel connect means that we don't set PIPEWAIT since pipewait
|
||||
will make libcurl prefer multiplexing */
|
||||
(void)curl_easy_setopt(per->curl, CURLOPT_PIPEWAIT,
|
||||
global->parallel_connect ? 0L : 1L);
|
||||
(void)curl_easy_setopt(per->curl, CURLOPT_PRIVATE, per);
|
||||
(void)curl_easy_setopt(per->curl, CURLOPT_XFERINFOFUNCTION, xferinfo_cb);
|
||||
(void)curl_easy_setopt(per->curl, CURLOPT_XFERINFODATA, per);
|
||||
|
Loading…
Reference in New Issue
Block a user