]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
http2: don't set KEEP_SEND when there's no more data to be sent
authorRobert Ronto <rronto@gmail.com>
Mon, 15 Mar 2021 14:35:10 +0000 (15:35 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 15 Mar 2021 22:29:35 +0000 (23:29 +0100)
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

index 01322cb01321bfd6e85fee629b27a24c3db7ffd7..70f4caceae2b96d8cea371c03bbe4ffb545bc662 100644 (file)
@@ -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;