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

[PATCH v2 3/4] curl: fix symbolic constant typechecks with curl_easy_setopt()

From
Jeff King via GitGitGadget <gitgitgadget@gmail.com>
Date
Jun 6, 2025, 09:29 UTC
Message-ID
<4558c8f84b2f8d3ba1483727bcb49935ae8ff595.1749202164.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.1931.v2.git.1749202164.gitgitgadget@gmail.com>
From: Jeff King <peff@peff.net>

As with the previous two commits, we should be passing long integers, not regular ones, to curl_easy_setopt(), and compiling against curl 8.14 loudly complains if we don't.

This patch catches the remaining cases, which are ones where we pass curl's own symbolic constants. We'll cast them to long manually in each call.

It seems kind of weird to me that curl doesn't define these constants as longs, since the point of them is to pass to curl_easy_setopt(). But in the curl documentation and examples, they clearly show casting them as part of the setopt calls. It may be that there is some reason not to push the type into the macro, like backwards compatibility. I didn't dig, as it doesn't really matter: we have to follow what existing curl versions ask for anyway.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 http.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/http.c b/http.c
index cce2ea728736..ecbc47ea4b3f 100644
--- a/http.c
+++ b/http.c
@@ -1057,7 +1057,7 @@ static CURL *get_curl_handle(void)
 
 	if (http_ssl_backend && !strcmp("schannel", http_ssl_backend) &&
 	    !http_schannel_check_revoke) {
-		curl_easy_setopt(result, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);
+		curl_easy_setopt(result, CURLOPT_SSL_OPTIONS, (long)CURLSSLOPT_NO_REVOKE);
 	}
 
 	if (http_proactive_auth != PROACTIVE_AUTH_NONE)
@@ -1118,7 +1118,7 @@ static CURL *get_curl_handle(void)
 	}
 
 	curl_easy_setopt(result, CURLOPT_MAXREDIRS, 20L);
-	curl_easy_setopt(result, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
+	curl_easy_setopt(result, CURLOPT_POSTREDIR, (long)CURL_REDIR_POST_ALL);
 
 #ifdef GIT_CURL_HAVE_CURLOPT_PROTOCOLS_STR
 	{
@@ -1193,18 +1193,18 @@ static CURL *get_curl_handle(void)
 
 		if (starts_with(curl_http_proxy, "socks5h"))
 			curl_easy_setopt(result,
-				CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
+				CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS5_HOSTNAME);
 		else if (starts_with(curl_http_proxy, "socks5"))
 			curl_easy_setopt(result,
-				CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
+				CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS5);
 		else if (starts_with(curl_http_proxy, "socks4a"))
 			curl_easy_setopt(result,
-				CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4A);
+				CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS4A);
 		else if (starts_with(curl_http_proxy, "socks"))
 			curl_easy_setopt(result,
-				CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
+				CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS4);
 		else if (starts_with(curl_http_proxy, "https")) {
-			curl_easy_setopt(result, CURLOPT_PROXYTYPE, CURLPROXY_HTTPS);
+			curl_easy_setopt(result, CURLOPT_PROXYTYPE, (long)CURLPROXY_HTTPS);
 
 			if (http_proxy_ssl_cert)
 				curl_easy_setopt(result, CURLOPT_PROXY_SSLCERT, http_proxy_ssl_cert);
-- 
gitgitgadget
Previous: Jeff King via GitGitGadgetNext: Johannes Schindelin via GitGitGadget
Message 7 of 14 in “curl: pass `long` values where expected”
  1. curl: pass `long` values where expectedJohannes Schindelin via GitGitGadget, Jun 5, 2025
  2. Kristoffer HaugsbakkJun 5, 2025
  3. Johannes SchindelinJun 5, 2025
  4. 0/4 curl: pass long values where expectedJohannes Schindelin via GitGitGadget, Jun 6, 2025
  5. 1/4 curl: fix integer constant typechecks with curl_easy_setopt()Jeff King via GitGitGadget, Jun 6, 2025
  6. 2/4 curl: fix integer variable typechecks with curl_easy_setopt()Jeff King via GitGitGadget, Jun 6, 2025
  7. 3/4 curl: fix symbolic constant typechecks with curl_easy_setopt()Jeff King via GitGitGadget, Jun 6, 2025
  8. 4/4 curl: pass `long` values where expectedJohannes Schindelin via GitGitGadget, Jun 6, 2025
  9. Jeff KingJun 6, 2025
  10. Junio C HamanoJun 6, 2025
  11. Junio C HamanoJun 6, 2025
  12. Kristoffer HaugsbakkJun 6, 2025
  13. Martin ÅgrenJun 6, 2025
  14. Kristoffer HaugsbakkJun 6, 2025

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.