1
0
mirror of https://github.com/moparisthebest/curl synced 2024-11-16 06:25:03 -05:00

http2: skip immediate parsing of payload following protocol switch

This is considered not harmful as a following http2_recv shall be
called very soon.

This is considered helpful in the specific situation where some
servers (e.g. nghttpx v1.43.0) may fulfill stream 1 immediately
following the return of HTTP status 101, other than waiting for
the client-side connection preface to arrive.

Fixes #7036
Closes #7040
This commit is contained in:
Peng-Yu Chen 2021-05-10 23:05:36 +01:00 committed by Daniel Stenberg
parent 651a75e1e7
commit 455a63c66f
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -2335,8 +2335,15 @@ CURLcode Curl_http2_switched(struct Curl_easy *data,
DEBUGASSERT(httpc->nread_inbuf == 0); DEBUGASSERT(httpc->nread_inbuf == 0);
if(-1 == h2_process_pending_input(data, httpc, &result)) /* Good enough to call it an end once the remaining payload is copied to the
return CURLE_HTTP2; * connection buffer.
* Some servers (e.g. nghttpx v1.43.0) may fulfill stream 1 immediately
* following the protocol switch other than waiting for the client-side
* connection preface. If h2_process_pending_input is invoked here to parse
* the remaining payload, stream 1 would be marked as closed too early and
* thus ignored in http2_recv (following 252790c53).
* The logic in lib/http.c and lib/transfer.c guarantees a following
* http2_recv would be invoked very soon. */
return CURLE_OK; return CURLE_OK;
} }