mirror of
https://github.com/curl/curl.git
synced 2026-07-23 23:57:16 +03:00
tool: Add option --retry-all-errors to retry on any error
The "sledgehammer" of retrying. Closes https://github.com/curl/curl/pull/5185
This commit is contained in:
parent
98e5904165
commit
b995bb58cb
8 changed files with 98 additions and 1 deletions
|
|
@ -223,6 +223,7 @@ struct OperationConfig {
|
|||
bool tcp_nodelay;
|
||||
bool tcp_fastopen;
|
||||
long req_retry; /* number of retries */
|
||||
bool retry_all_errors; /* retry on any error */
|
||||
bool retry_connrefused; /* set connection refused as a transient error */
|
||||
long retry_delay; /* delay between retries (in seconds) */
|
||||
long retry_maxtime; /* maximum time to keep retrying */
|
||||
|
|
|
|||
|
|
@ -197,6 +197,7 @@ static const struct LongShort aliases[]= {
|
|||
{"$Y", "suppress-connect-headers", ARG_BOOL},
|
||||
{"$Z", "compressed-ssh", ARG_BOOL},
|
||||
{"$~", "happy-eyeballs-timeout-ms", ARG_STRING},
|
||||
{"$!", "retry-all-errors", ARG_BOOL},
|
||||
{"0", "http1.0", ARG_NONE},
|
||||
{"01", "http1.1", ARG_NONE},
|
||||
{"02", "http2", ARG_NONE},
|
||||
|
|
@ -927,6 +928,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
|
|||
if(err)
|
||||
return err;
|
||||
break;
|
||||
case '!': /* --retry-all-errors */
|
||||
config->retry_all_errors = toggle;
|
||||
break;
|
||||
|
||||
case 'k': /* --proxy-negotiate */
|
||||
if(curlinfo->features & CURL_VERSION_SPNEGO)
|
||||
|
|
|
|||
|
|
@ -399,6 +399,8 @@ static const struct helptxt helptext[] = {
|
|||
"Retry on connection refused (use with --retry)"},
|
||||
{" --retry-delay <seconds>",
|
||||
"Wait time between retries"},
|
||||
{" --retry-all-errors",
|
||||
"Retry all errors (use with --retry) (read manpage, don't use by default)"},
|
||||
{" --retry-max-time <seconds>",
|
||||
"Retry only within this period"},
|
||||
{" --sasl-authzid <identity> ",
|
||||
|
|
|
|||
|
|
@ -437,6 +437,7 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
|
|||
config->retry_maxtime*1000L)) ) {
|
||||
enum {
|
||||
RETRY_NO,
|
||||
RETRY_ALL_ERRORS,
|
||||
RETRY_TIMEOUT,
|
||||
RETRY_CONNREFUSED,
|
||||
RETRY_HTTP,
|
||||
|
|
@ -506,11 +507,15 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
|
|||
retry = RETRY_FTP;
|
||||
}
|
||||
|
||||
if(result && !retry && config->retry_all_errors)
|
||||
retry = RETRY_ALL_ERRORS;
|
||||
|
||||
if(retry) {
|
||||
long sleeptime = 0;
|
||||
curl_off_t retry_after = 0;
|
||||
static const char * const m[]={
|
||||
NULL,
|
||||
"(retrying all errors)",
|
||||
"timeout",
|
||||
"connection refused",
|
||||
"HTTP error",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue