From: Emre Çalışkan Date: Tue, 14 Oct 2025 18:35:54 +0000 (+0300) Subject: transfer: reset retry count on each request X-Git-Tag: rc-8_17_0-2~76 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5e46318414590c99fc98709598e5e3441d63648b;p=thirdparty%2Fcurl.git transfer: reset retry count on each request Reported-by: plv1313 on github Fixes #18926 Closes #19066 --- diff --git a/lib/easy.c b/lib/easy.c index 877cf13b9b..793a18f33e 100644 --- a/lib/easy.c +++ b/lib/easy.c @@ -1119,7 +1119,6 @@ void curl_easy_reset(CURL *d) data->progress.hide = TRUE; data->state.current_speed = -1; /* init to negative == impossible */ - data->state.retrycount = 0; /* reset the retry counter */ data->state.recent_conn_id = -1; /* clear remembered connection id */ /* zero out authentication data: */ diff --git a/lib/transfer.c b/lib/transfer.c index d20440fec7..d7014aab87 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -481,6 +481,14 @@ CURLcode Curl_pretransfer(struct Curl_easy *data) { CURLcode result = CURLE_OK; + /* Reset the retry count at the start of each request. + * If the retry count is not reset, when the connection drops, + * it will not enter the retry mechanism on CONN_MAX_RETRIES + 1 attempts + * and will immediately throw + * "Connection died, tried CONN_MAX_RETRIES times before giving up". + * By resetting it here, we ensure each new request starts fresh. */ + data->state.retrycount = 0; + if(!data->set.str[STRING_SET_URL] && !data->set.uh) { /* we cannot do anything without URL */ failf(data, "No URL set");