mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 15:48:49 -05:00
http2: Fix assertion error on redirect with CL=0
This fixes assertion error which occurs when redirect is done with 0 length body via HTTP/2, and the easy handle is reused, but new connection is established due to hostname change: curl: http2.c:1572: ssize_t http2_recv(struct connectdata *, int, char *, size_t, CURLcode *): Assertion `httpc->drain_total >= data->state.drain' failed. To fix this bug, ensure that http2_handle_stream is called. Fixes #1286 Closes #1302
This commit is contained in:
parent
958e176688
commit
475c2583d5
14
lib/http.c
14
lib/http.c
@ -3240,9 +3240,17 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
|
||||
k->maxdownload = k->size;
|
||||
}
|
||||
|
||||
/* If max download size is *zero* (nothing) we already
|
||||
have nothing and can safely return ok now! */
|
||||
if(0 == k->maxdownload)
|
||||
/* If max download size is *zero* (nothing) we already have
|
||||
nothing and can safely return ok now! But for HTTP/2, we'd
|
||||
like to call http2_handle_stream_close to properly close a
|
||||
stream. In order to do this, we keep reading until we
|
||||
close the stream. */
|
||||
if(0 == k->maxdownload
|
||||
#if defined(USE_NGHTTP2)
|
||||
&& !((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
|
||||
conn->httpversion == 20)
|
||||
#endif
|
||||
)
|
||||
*stop_reading = TRUE;
|
||||
|
||||
if(*stop_reading) {
|
||||
|
Loading…
Reference in New Issue
Block a user