mirror of
https://github.com/curl/curl.git
synced 2025-09-16 09:02:40 +03:00
http2: set drain on stream end
Ensure that on_frame_recv() stream end will trigger a read if there is pending data. Without this it could happen that the pending data is never consumed. This combined with https://github.com/curl/curl/pull/10529 should fix https://github.com/curl/curl/issues/10525 Ref: https://github.com/curl/curl/issues/10525 Closes #10530
This commit is contained in:
parent
3103de2053
commit
87ed650d04
|
@ -868,6 +868,14 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
|
||||||
return NGHTTP2_ERR_CALLBACK_FAILURE;
|
return NGHTTP2_ERR_CALLBACK_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(frame->hd.flags & NGHTTP2_FLAG_END_STREAM) {
|
||||||
|
/* Stream has ended. If there is pending data, ensure that read
|
||||||
|
will occur to consume it. */
|
||||||
|
if(!data->state.drain && stream->memlen) {
|
||||||
|
drain_this(cf, data_s);
|
||||||
|
Curl_expire(data, 0, EXPIRE_RUN_NOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case NGHTTP2_HEADERS:
|
case NGHTTP2_HEADERS:
|
||||||
DEBUGF(LOG_CF(data_s, cf, "[h2sid=%u] recv frame HEADERS", stream_id));
|
DEBUGF(LOG_CF(data_s, cf, "[h2sid=%u] recv frame HEADERS", stream_id));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user