diff options
Diffstat (limited to 'src/tool_operate.c')
-rw-r--r-- | src/tool_operate.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/tool_operate.c b/src/tool_operate.c index 3e426960a..01ee20061 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -496,7 +496,8 @@ static CURLcode post_transfer(struct GlobalConfig *global, } if(retry) { - curl_off_t sleeptime = 0; + long sleeptime = 0; + curl_off_t retry_after = 0; static const char * const m[]={ NULL, "timeout", @@ -507,12 +508,13 @@ static CURLcode post_transfer(struct GlobalConfig *global, sleeptime = per->retry_sleep; if(RETRY_HTTP == retry) { - curl_easy_getinfo(curl, CURLINFO_RETRY_AFTER, &sleeptime); - if(sleeptime) { - if(sleeptime > LONG_MAX/1000) + curl_easy_getinfo(curl, CURLINFO_RETRY_AFTER, &retry_after); + if(retry_after) { + /* store in a 'long', make sure it doesn't overflow */ + if(retry_after > LONG_MAX/1000) sleeptime = LONG_MAX; else - sleeptime *= 1000; /* milliseconds */ + sleeptime = (long)retry_after * 1000; /* milliseconds */ } } warnf(config->global, "Transient problem: %s " |