mirror of
https://github.com/curl/curl.git
synced 2026-07-24 18:57:18 +03: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
6 changed files with 22 additions and 1 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue