From 068661bb028d7c9f08e5d35cf877c9584f9a46e5 Mon Sep 17 00:00:00 2001 From: Robert Ronto Date: Mon, 15 Mar 2021 15:35:10 +0100 Subject: [PATCH] http2: don't set KEEP_SEND when there's no more data to be sent this should fix an issue where curl sometimes doesn't send out a request with authorization info after a 401 is received over http2 Closes #6747 --- lib/http2.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/http2.c b/lib/http2.c index 01322cb013..70f4caceae 100644 --- a/lib/http2.c +++ b/lib/http2.c @@ -1446,13 +1446,15 @@ CURLcode Curl_http2_done_sending(struct Curl_easy *data, H2BUGF(infof(data, "HTTP/2 still wants to send data (easy %p)\n", data)); - /* re-set KEEP_SEND to make sure we are called again */ - k->keepon |= KEEP_SEND; - /* and attempt to send the pending frames */ rv = h2_session_send(data, h2); if(rv != 0) result = CURLE_SEND_ERROR; + + if(nghttp2_session_want_write(h2)) { + /* re-set KEEP_SEND to make sure we are called again */ + k->keepon |= KEEP_SEND; + } } } return result; -- 2.47.3