From c7f95fa0cc252167cb210e1c0ab4f8bbabc1c371 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 22 Dec 2020 09:09:46 +0100 Subject: h2: do not wait for RECV on paused transfers ... as the socket might be readable all the time when paused and thus causing a busy-loop. Reported-by: Harry Sintonen Reviewed-by: Jay Satiro Fixes #6356 Closes #6357 --- lib/http2.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/http2.c b/lib/http2.c index b138fb4b0..7a337a7f3 100644 --- a/lib/http2.c +++ b/lib/http2.c @@ -101,9 +101,10 @@ static int http2_perform_getsock(const struct connectdata *conn, sock[0] = conn->sock[FIRSTSOCKET]; - /* in a HTTP/2 connection we can basically always get a frame so we should - always be ready for one */ - bitmap |= GETSOCK_READSOCK(FIRSTSOCKET); + if(!(k->keepon & KEEP_RECV_PAUSE)) + /* Unless paused - in a HTTP/2 connection we can basically always get a + frame so we should always be ready for one */ + bitmap |= GETSOCK_READSOCK(FIRSTSOCKET); /* we're still uploading or the HTTP/2 layer wants to send data */ if(((k->keepon & (KEEP_SEND|KEEP_SEND_PAUSE)) == KEEP_SEND) || -- cgit v1.2.1