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

[RFC 3/3] http: always remove curl easy from curlm session on release

From
EWEric Wong <e@80x24.org>
Date
Sep 13, 2016, 00:25 UTC
Message-ID
<20160913002557.10671-4-e@80x24.org>
In-Reply-To
<20160913002557.10671-1-e@80x24.org>

We must call curl_multi_remove_handle when releasing the slot to prevent subsequent calls to curl_multi_add_handle from failing with CURLM_ADDED_ALREADY (in curl 7.32.1+; older versions returned CURLM_BAD_EASY_HANDLE)

Signed-off-by: Eric Wong <e@80x24.org>
---
 http.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/http.c b/http.c
index a7eaf7b..3c4c3f5 100644
--- a/http.c
+++ b/http.c
@@ -1168,11 +1168,13 @@ void run_active_slot(struct active_request_slot *slot)
 static void release_active_slot(struct active_request_slot *slot)
 {
 	closedown_active_slot(slot);
-	if (slot->curl && curl_session_count > min_curl_sessions) {
+	if (slot->curl) {
 		xmulti_remove_handle(slot);
-		curl_easy_cleanup(slot->curl);
-		slot->curl = NULL;
-		curl_session_count--;
+		if (curl_session_count > min_curl_sessions) {
+			curl_easy_cleanup(slot->curl);
+			slot->curl = NULL;
+			curl_session_count--;
+		}
 	}
 #ifdef USE_CURL_MULTI
 	fill_active_slots();
-- 
EW
Previous: Eric WongNext: Junio C Hamano
Message 6 of 15 in “git clone http:// fails some times with "Request for d53.. aborted"”
  1. Yaroslav HalchenkoSep 9, 2016
  2. Eric WongSep 10, 2016
  3. 0/3 http: avoid repeatedly adding curl easy to curlmEric Wong, Sep 13, 2016
  4. 1/3 http: warn on curl_multi_add_handle failuresEric Wong, Sep 13, 2016
  5. 2/3 http: consolidate #ifdefs for curl_multi_remove_handleEric Wong, Sep 13, 2016
  6. 3/3 http: always remove curl easy from curlm session on releaseEric Wong, Sep 13, 2016
  7. Junio C HamanoSep 13, 2016
  8. 4/3 http: check curl_multi_remove_handle error codeEric Wong, Sep 21, 2016
  9. Jeff KingSep 21, 2016
  10. Eric WongSep 21, 2016
  11. Jeff KingSep 21, 2016
  12. Yaroslav HalchenkoSep 14, 2016
  13. git submodule add spits unrelated to actual problem error msg about .gitignoreYaroslav Halchenko, Sep 14, 2016
  14. Stefan BellerSep 14, 2016
  15. Yaroslav HalchenkoSep 14, 2016

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.