timeout handling: auto-detect effective timeout

When checking a transfer for being expired via `Curl_timeleft_ms()`,
eleminate the `bool connecting` parameter and have the function check
the `mstate` of the transfer instead.

Advantages:
* eleminate the caller needing awareness if the transfer is
  connecting or in a later state
* fix pingpong timeout handling to check the correct timeout
  during "proto_connect" phases
* avoid using "connecting" timeouts during establishing a secondary
  connection (e.g. FTP) since this would use the timestamp from
  the original, primary connect and thus be wrong

Reported-by: Wyuer on github
Fixes #20347
Closes #20354
This commit is contained in:
Stefan Eissing 2026-01-19 11:38:35 +01:00 committed by Daniel Stenberg
parent 3d354f55b7
commit 8ce16e7bf2
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
25 changed files with 73 additions and 79 deletions

View file

@ -304,8 +304,8 @@ static CURLcode doh_probe_run(struct Curl_easy *data,
goto error;
}
timeout_ms = Curl_timeleft_ms(data, TRUE);
if(timeout_ms <= 0) {
timeout_ms = Curl_timeleft_ms(data);
if(timeout_ms < 0) {
result = CURLE_OPERATION_TIMEDOUT;
goto error;
}