summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ronto <rronto@gmail.com>2021-03-15 15:35:10 +0100
committerDaniel Stenberg <daniel@haxx.se>2021-03-15 23:29:35 +0100
commit068661bb028d7c9f08e5d35cf877c9584f9a46e5 (patch)
treeb5ff24fe34aeb72d905a89c5b1b0216fa2722622
parentcc615f48e712202fc26297bc7597e3a1e9188aac (diff)
downloadcurl-068661bb028d7c9f08e5d35cf877c9584f9a46e5.tar.gz
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
-rw-r--r--lib/http2.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/http2.c b/lib/http2.c
index 01322cb01..70f4cacea 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;