Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save bagder/713d8b8c82f78118152d9a979d03ea33 to your computer and use it in GitHub Desktop.
Save bagder/713d8b8c82f78118152d9a979d03ea33 to your computer and use it in GitHub Desktop.
http2: handle DONE called for the paused stream
From 4fb969e547f0fcc59e7e40662d0b799b0581f03d Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Thu, 31 Mar 2022 23:28:35 +0200
Subject: [PATCH] http2: handle DONE called for the paused stream
As it could otherwise stall all streams on the connection
---
lib/http2.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/lib/http2.c b/lib/http2.c
index 82a993930..34daaf17c 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -1238,15 +1238,14 @@ void Curl_http2_done(struct Curl_easy *data, bool premature)
/* RST_STREAM */
set_transfer(httpc, data); /* set the transfer */
if(!nghttp2_submit_rst_stream(httpc->h2, NGHTTP2_FLAG_NONE,
http->stream_id, NGHTTP2_STREAM_CLOSED))
(void)nghttp2_session_send(httpc->h2);
-
- if(http->stream_id == httpc->pause_stream_id) {
- H2BUGF(infof(data, "stopped the pause stream!"));
- httpc->pause_stream_id = 0;
- }
+ }
+ if(http->stream_id == httpc->pause_stream_id) {
+ H2BUGF(infof(data, "DONE the pause stream!"));
+ httpc->pause_stream_id = 0;
}
if(data->state.drain)
drained_transfer(data, httpc);
--
2.35.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment