git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 5/5] http: reset CURLOPT_POSTFIELDSIZE_LARGE between requests

From
Jiří Hruška <jirka@fud.cz>
Date
Nov 15, 2023, 03:34 UTC
Message-ID
<CAGE_+C5pnASOsrDr4ehNj-deYbSTr=pRgPcWqq5VSQs-Y08ttQ@mail.gmail.com>
In-Reply-To
<20231115033121.939-1-jirka@fud.cz>

`get_active_slot()` makes sure that the reused cURL handles it gives out are as good as fresh ones, by resetting all options that other code might have set on them back to defaults.

But this does not apply to `CURLOPT_POSTFIELDSIZE_LARGE` yet, which can stay set from a previous request. For example, an earlier probe request with just a flush packet "0000" leaves it set to 4.

The problem seems harmless in practice, but it can be confusing to see a negative amount of remaining bytes to upload when inspecting libcurl internals while debugging networking-related issues, for example.

So reset also this option to its default value (which is -1, not 0).
Signed-off-by: Jiri Hruska <jirka@fud.cz>
---
 http.c | 1 +
 1 file changed, 1 insertion(+)
diff --git a/http.c b/http.c
index 8f71bf00d8..14f2fbb82e 100644
--- a/http.c
+++ b/http.c
@@ -1454,6 +1454,7 @@ struct active_request_slot *get_active_slot(void)
 	curl_easy_setopt(slot->curl, CURLOPT_READFUNCTION, NULL);
 	curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, NULL);
 	curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDS, NULL);
+	curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)-1);
 	curl_easy_setopt(slot->curl, CURLOPT_UPLOAD, 0);
 	curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1);
 	curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 1);
-- 
2.42.1.5.g2f21867bd5
Previous: Jiří HruškaNext: Patrick Steinhardt
Message 16 of 18 in “remote-curl: avoid hang if curl asks for more data after eof”
  1. remote-curl: avoid hang if curl asks for more data after eofJiří Hruška, Nov 13, 2023
  2. Jonathan TanNov 13, 2023
  3. Junio C HamanoNov 14, 2023
  4. Jiří HruškaNov 14, 2023
  5. Jiří HruškaNov 27, 2023
  6. Jiří HruškaNov 14, 2023
  7. 0/5 Avoid hang if curl needs eof twice + minor related improvementsJiří Hruška, Nov 15, 2023
  8. Jonathan TanNov 15, 2023
  9. Jiří HruškaNov 27, 2023
  10. Jonathan TanNov 27, 2023
  11. 2/5 remote-curl: improve readability of curl callbacksJiří Hruška, Nov 15, 2023
  12. 1/5 remote-curl: avoid hang if curl asks for more data after eofJiří Hruška, Nov 15, 2023
  13. Jonathan TanNov 15, 2023
  14. 3/5 remote-curl: simplify rpc_out() - remove superfluous ifsJiří Hruška, Nov 15, 2023
  15. 4/5 remote-curl: simplify rpc_out() - less nesting and renameJiří Hruška, Nov 15, 2023
  16. 5/5 http: reset CURLOPT_POSTFIELDSIZE_LARGE between requestsJiří Hruška, Nov 15, 2023
  17. Patrick SteinhardtNov 15, 2023
  18. Jiří HruškaNov 27, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.