http2: avoid too early connection re-use/multiplexing

HTTP/1 connections that are upgraded to HTTP/2 should not be picked up
for reuse and multiplexing by other handles until the 101 switching
process is completed.

Lots-of-debgging-by: Stefan Eissing
Reported-by: Richard W.M. Jones
Bug: https://curl.se/mail/lib-2023-07/0045.html
Closes #11557
This commit is contained in:
Daniel Stenberg 2023-07-31 17:27:03 +02:00
parent 15c40a32b7
commit d4618a3fc4
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
5 changed files with 42 additions and 20 deletions

View file

@ -1577,6 +1577,18 @@ static bool multi_ischanged(struct Curl_multi *multi, bool clear)
return retval;
}
/*
* Curl_multi_connchanged() is called to tell that there is a connection in
* this multi handle that has changed state (multiplexing become possible, the
* number of allowed streams changed or similar), and a subsequent use of this
* multi handle should move CONNECT_PEND handles back to CONNECT to have them
* retry.
*/
void Curl_multi_connchanged(struct Curl_multi *multi)
{
multi->recheckstate = TRUE;
}
CURLMcode Curl_multi_add_perform(struct Curl_multi *multi,
struct Curl_easy *data,
struct connectdata *conn)