diff options
author | Robert Ronto <rronto@gmail.com> | 2021-03-15 15:35:10 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2021-03-15 23:29:35 +0100 |
commit | 068661bb028d7c9f08e5d35cf877c9584f9a46e5 (patch) | |
tree | b5ff24fe34aeb72d905a89c5b1b0216fa2722622 | |
parent | cc615f48e712202fc26297bc7597e3a1e9188aac (diff) | |
download | curl-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.c | 8 |
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; |