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

Re: [PATCH 1/2] curl: streamline conditional compilation

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Mar 16, 2022, 14:43 UTC
Message-ID
<220316.86h77ydkfl.gmgdl@evledraar.gmail.com>
In-Reply-To
<20220316140106.14678-2-gitter.spiros@gmail.com>
On Wed, Mar 16 2022, Elia Pinto wrote:

[Meta: Please chehck the -vN and --in-reply-to options to git-format-patch et al, i.e. make a v2 a v2, and have it reply to the v1 patch or cover-letter.]

Show 9 quoted lines
> Earlier we introduced git-curl-compat.h that defines bunch of
> GIT_CURL_HAVE_X where X is a feature of cURL library we care about,
> to make it easily manageable to conditionally compile code against
> the version of cURL library we are given.
>
> There however are two oddball macros.  Instead of checking
> GIT_CURL_HAVE_CURL_SOCKOPT_OK and using a fallback definition for
> CURL_SOCKOPT_OK macro, we just defined CURL_SOCKOPT_OK to a safe
> value when compiling against an old version that lack the symbol.
The way it was being done before was intentional & discused on list.

See my original https://lore.kernel.org/git/patch-v3-7.7-93a2775d0ee-20210730T092843Z-avarab@gmail.com/ which did it pretty much like that, and Junio's subsequent follow-up. I.e. this breadcrumb trail: https://lore.kernel.org/git/?q=CURL_SOCKOPT_OK

Show 5 quoted lines
> -#if LIBCURL_VERSION_NUM < 0x071505
> -#define CURL_SOCKOPT_OK 0
> +#if LIBCURL_VERSION_NUM >= 0x071505
> +#define GIT_CURL_HAVE_CURL_SOCKOPT_OK 1
>  #endif
IOW we should drop this.
Show 7 quoted lines
>  /**
>   * CURLOPT_TCP_KEEPALIVE was added in 7.25.0, released in March 2012.
>   */
>  #if LIBCURL_VERSION_NUM >= 0x071900
> -#define GITCURL_HAVE_CURLOPT_TCP_KEEPALIVE 1
> +#define GIT_CURL_HAVE_CURLOPT_TCP_KEEPALIVE 1
>  #endif
This change is good.
Show 12 quoted lines
> diff --git a/http.c b/http.c
> index 229da4d148..d7ad7db1d6 100644
> --- a/http.c
> +++ b/http.c
> @@ -517,7 +517,7 @@ static int has_proxy_cert_password(void)
>  }
>  #endif
>  
> -#ifdef GITCURL_HAVE_CURLOPT_TCP_KEEPALIVE
> +#ifdef GIT_CURL_HAVE_CURLOPT_TCP_KEEPALIVE
>  static void set_curl_keepalive(CURL *c)
>  {
As is this.
Show 11 quoted lines
>  	curl_easy_setopt(c, CURLOPT_TCP_KEEPALIVE, 1);
> @@ -536,7 +536,9 @@ static int sockopt_callback(void *client, curl_socket_t fd, curlsocktype type)
>  	rc = setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void *)&ka, len);
>  	if (rc < 0)
>  		warning_errno("unable to set SO_KEEPALIVE on socket");
> -
> +#ifndef GIT_CURL_HAVE_CURL_SOCKOPT_OK
> +#define CURL_SOCKOPT_OK 0
> +#endif
>  	return CURL_SOCKOPT_OK;
>  }

The whole point of git-curl-compat.h and its big-brother git-compat-util.h is that we'd prefer not to have such hacks inline if at all possible.

For most of the GIT_CURL_* stuff we need to since it's conditionally using symbols etc., but in this case we can just define a fallback centrally and not worry about it in the code.

So the pre-image really is much better.
Previous: Elia PintoNext: Junio C Hamano
Message 3 of 7 in “addition of all symbols defined by curl”
  1. 0/2 addition of all symbols defined by curlElia Pinto, Mar 16, 2022
  2. 1/2 curl: streamline conditional compilationElia Pinto, Mar 16, 2022
  3. Ævar Arnfjörð BjarmasonMar 16, 2022
  4. Junio C HamanoMar 16, 2022
  5. 2/2 git-curl-compat.h: addition of all symbols defined by curlElia Pinto, Mar 16, 2022
  6. Ævar Arnfjörð BjarmasonMar 16, 2022
  7. Elia PintoMar 16, 2022

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.