]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
sendf: fix paused header writes since after the header API
authorDaniel Stenberg <daniel@haxx.se>
Tue, 19 Jul 2022 15:54:23 +0000 (17:54 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 19 Jul 2022 22:49:06 +0000 (00:49 +0200)
Regression since d1e4a67

Reported-by: Sergey Ogryzkov
Fixes #9180
Closes #9182

lib/sendf.c

index 32714255d4dc5abd92ab33c06537bc353076044b..d19fb552331a30b09028407988bfb614b254d0ce 100644 (file)
@@ -496,6 +496,9 @@ static CURLcode pausewrite(struct Curl_easy *data,
       }
     }
     DEBUGASSERT(i < 3);
+    if(i >= 3)
+      /* There are more types to store than what fits: very bad */
+      return CURLE_OUT_OF_MEMORY;
   }
   else
     i = 0;
@@ -607,8 +610,10 @@ static CURLcode chop_write(struct Curl_easy *data,
       /* here we pass in the HEADER bit only since if this was body as well
          then it was passed already and clearly that didn't trigger the
          pause, so this is saved for later with the HEADER bit only */
-      return pausewrite(data, CLIENTWRITE_HEADER, optr, olen);
-
+      return pausewrite(data, CLIENTWRITE_HEADER |
+                        (type & (CLIENTWRITE_STATUS|CLIENTWRITE_CONNECT|
+                                 CLIENTWRITE_1XX|CLIENTWRITE_TRAILER)),
+                        optr, olen);
     if(wrote != olen) {
       failf(data, "Failed writing header");
       return CURLE_WRITE_ERROR;