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

[RFC 2/3] http: consolidate #ifdefs for curl_multi_remove_handle

From
EWEric Wong <e@80x24.org>
Date
Sep 13, 2016, 00:25 UTC
Message-ID
<20160913002557.10671-3-e@80x24.org>
In-Reply-To
<20160913002557.10671-1-e@80x24.org>
I find #ifdefs makes code difficult-to-follow.

An early version of this patch had error checking for curl_multi_remove_handle calls, but caused some tests (e.g. t5541) to fail under curl 7.26.0 on old Debian wheezy.

Signed-off-by: Eric Wong <e@80x24.org>
---
 http.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/http.c b/http.c
index cac5db9..a7eaf7b 100644
--- a/http.c
+++ b/http.c
@@ -201,6 +201,13 @@ static void finish_active_slot(struct active_request_slot *slot)
 		slot->callback_func(slot->callback_data);
 }
 
+static void xmulti_remove_handle(struct active_request_slot *slot)
+{
+#ifdef USE_CURL_MULTI
+	curl_multi_remove_handle(curlm, slot->curl);
+#endif
+}
+
 #ifdef USE_CURL_MULTI
 static void process_curl_messages(void)
 {
@@ -216,7 +223,7 @@ static void process_curl_messages(void)
 			       slot->curl != curl_message->easy_handle)
 				slot = slot->next;
 			if (slot != NULL) {
-				curl_multi_remove_handle(curlm, slot->curl);
+				xmulti_remove_handle(slot);
 				slot->curl_result = curl_result;
 				finish_active_slot(slot);
 			} else {
@@ -881,9 +888,7 @@ void http_cleanup(void)
 	while (slot != NULL) {
 		struct active_request_slot *next = slot->next;
 		if (slot->curl != NULL) {
-#ifdef USE_CURL_MULTI
-			curl_multi_remove_handle(curlm, slot->curl);
-#endif
+			xmulti_remove_handle(slot);
 			curl_easy_cleanup(slot->curl);
 		}
 		free(slot);
@@ -1164,9 +1169,7 @@ static void release_active_slot(struct active_request_slot *slot)
 {
 	closedown_active_slot(slot);
 	if (slot->curl && curl_session_count > min_curl_sessions) {
-#ifdef USE_CURL_MULTI
-		curl_multi_remove_handle(curlm, slot->curl);
-#endif
+		xmulti_remove_handle(slot);
 		curl_easy_cleanup(slot->curl);
 		slot->curl = NULL;
 		curl_session_count--;
-- 
EW
Previous: Eric WongNext: Eric Wong
Message 5 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.