transfer: reset retry count on each request

Reported-by: plv1313 on github
Fixes #18926
Closes #19066
This commit is contained in:
Emre Çalışkan 2025-10-14 21:35:54 +03:00 committed by Daniel Stenberg
parent 182a5a9aae
commit 5e46318414
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
2 changed files with 8 additions and 1 deletions

View file

@ -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: */

View file

@ -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");