]> git.ipfire.org Git - thirdparty/git.git/commitdiff
http: drop support for curl < 7.19.4
authorJeff King <peff@peff.net>
Fri, 30 Jul 2021 17:59:44 +0000 (19:59 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 30 Jul 2021 19:04:41 +0000 (12:04 -0700)
In the last commit we dropped support for curl < 7.16.0, let's
continue that and drop support for versions older than 7.19.3. This
allows us to simplify the code by getting rid of some "#ifdef"'s.

Git was broken with vanilla curl < 7.19.4 from v2.12.0 until
v2.15.0. Compiling with it was broken by using CURLPROTO_* outside any
"#ifdef" in aeae4db174 (http: create function to get curl allowed
protocols, 2016-12-14), and fixed in v2.15.0 in f18777ba6ef (http: fix
handling of missing CURLPROTO_*, 2017-08-11).

It's unclear how much anyone was impacted by that in practice, since
as noted in [1] RHEL versions using curl older than that still
compiled, because RedHat backported some features. Perhaps other
vendors did the same.

Still, it's one datapoint indicating that it wasn't in active use at
the time. That (the v2.12.0 release) was in Feb 24, 2017, with v2.15.0
on Oct 30, 2017, it's now mid-2021.

1. http://lore.kernel.org/git/c8a2716d-76ac-735c-57f9-175ca3acbcb0@jupiterrise.com;
   followed-up by f18777ba6ef (http: fix handling of missing CURLPROTO_*,
   2017-08-11)

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
http.c
http.h

diff --git a/http.c b/http.c
index ef00e9302325f7fd44e7097780e8c362647347a5..1f0d7664d353785d86de5835fbf42b7cad9bfa00 100644 (file)
--- a/http.c
+++ b/http.c
@@ -28,9 +28,7 @@ static int min_curl_sessions = 1;
 static int curl_session_count;
 static int max_requests = -1;
 static CURLM *curlm;
-#ifndef NO_CURL_EASY_DUPHANDLE
 static CURL *curl_default;
-#endif
 
 #define PREV_BUF_SIZE 4096
 
@@ -440,24 +438,8 @@ static void init_curl_http_auth(CURL *result)
 
        credential_fill(&http_auth);
 
-#if LIBCURL_VERSION_NUM >= 0x071301
        curl_easy_setopt(result, CURLOPT_USERNAME, http_auth.username);
        curl_easy_setopt(result, CURLOPT_PASSWORD, http_auth.password);
-#else
-       {
-               static struct strbuf up = STRBUF_INIT;
-               /*
-                * Note that we assume we only ever have a single set of
-                * credentials in a given program run, so we do not have
-                * to worry about updating this buffer, only setting its
-                * initial value.
-                */
-               if (!up.len)
-                       strbuf_addf(&up, "%s:%s",
-                               http_auth.username, http_auth.password);
-               curl_easy_setopt(result, CURLOPT_USERPWD, up.buf);
-       }
-#endif
 }
 
 /* *var must be free-able */
@@ -471,22 +453,10 @@ static void var_override(const char **var, char *value)
 
 static void set_proxyauth_name_password(CURL *result)
 {
-#if LIBCURL_VERSION_NUM >= 0x071301
                curl_easy_setopt(result, CURLOPT_PROXYUSERNAME,
                        proxy_auth.username);
                curl_easy_setopt(result, CURLOPT_PROXYPASSWORD,
                        proxy_auth.password);
-#else
-               struct strbuf s = STRBUF_INIT;
-
-               strbuf_addstr_urlencode(&s, proxy_auth.username,
-                                       is_rfc3986_unreserved);
-               strbuf_addch(&s, ':');
-               strbuf_addstr_urlencode(&s, proxy_auth.password,
-                                       is_rfc3986_unreserved);
-               curl_proxyuserpwd = strbuf_detach(&s, NULL);
-               curl_easy_setopt(result, CURLOPT_PROXYUSERPWD, curl_proxyuserpwd);
-#endif
 }
 
 static void init_curl_proxy_auth(CURL *result)
@@ -748,7 +718,6 @@ void setup_curl_trace(CURL *handle)
        curl_easy_setopt(handle, CURLOPT_DEBUGDATA, NULL);
 }
 
-#ifdef CURLPROTO_HTTP
 static long get_curl_allowed_protocols(int from_user)
 {
        long allowed_protocols = 0;
@@ -764,7 +733,6 @@ static long get_curl_allowed_protocols(int from_user)
 
        return allowed_protocols;
 }
-#endif
 
 #if LIBCURL_VERSION_NUM >=0x072f00
 static int get_curl_http_version_opt(const char *version_string, long *opt)
@@ -906,19 +874,11 @@ static CURL *get_curl_handle(void)
        }
 
        curl_easy_setopt(result, CURLOPT_MAXREDIRS, 20);
-#if LIBCURL_VERSION_NUM >= 0x071301
        curl_easy_setopt(result, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
-#elif LIBCURL_VERSION_NUM >= 0x071101
-       curl_easy_setopt(result, CURLOPT_POST301, 1);
-#endif
-#ifdef CURLPROTO_HTTP
        curl_easy_setopt(result, CURLOPT_REDIR_PROTOCOLS,
                         get_curl_allowed_protocols(0));
        curl_easy_setopt(result, CURLOPT_PROTOCOLS,
                         get_curl_allowed_protocols(-1));
-#else
-       warning(_("Protocol restrictions not supported with cURL < 7.19.4"));
-#endif
        if (getenv("GIT_CURL_VERBOSE"))
                http_trace_curl_no_data();
        setup_curl_trace(result);
@@ -1012,11 +972,9 @@ static CURL *get_curl_handle(void)
                        die("Invalid proxy URL '%s'", curl_http_proxy);
 
                curl_easy_setopt(result, CURLOPT_PROXY, proxy_auth.host);
-#if LIBCURL_VERSION_NUM >= 0x071304
                var_override(&curl_no_proxy, getenv("NO_PROXY"));
                var_override(&curl_no_proxy, getenv("no_proxy"));
                curl_easy_setopt(result, CURLOPT_NOPROXY, curl_no_proxy);
-#endif
        }
        init_curl_proxy_auth(result);
 
@@ -1147,9 +1105,7 @@ void http_init(struct remote *remote, const char *url, int proactive_auth)
                        ssl_cert_password_required = 1;
        }
 
-#ifndef NO_CURL_EASY_DUPHANDLE
        curl_default = get_curl_handle();
-#endif
 }
 
 void http_cleanup(void)
@@ -1167,9 +1123,7 @@ void http_cleanup(void)
        }
        active_queue_head = NULL;
 
-#ifndef NO_CURL_EASY_DUPHANDLE
        curl_easy_cleanup(curl_default);
-#endif
 
        curl_multi_cleanup(curlm);
        curl_global_cleanup();
@@ -1248,11 +1202,7 @@ struct active_request_slot *get_active_slot(void)
        }
 
        if (slot->curl == NULL) {
-#ifdef NO_CURL_EASY_DUPHANDLE
-               slot->curl = get_curl_handle();
-#else
                slot->curl = curl_easy_duphandle(curl_default);
-#endif
                curl_session_count++;
        }
 
diff --git a/http.h b/http.h
index cb092622a73e6ccb8ebb97b2a16ef78f49eee81f..19f19dbe74ccdb0d8321284f36504694f589e486 100644 (file)
--- a/http.h
+++ b/http.h
 
 #define DEFAULT_MAX_REQUESTS 5
 
-#if LIBCURL_VERSION_NUM == 0x071000
-#define NO_CURL_EASY_DUPHANDLE
-#endif
-
 /*
  * CURLOPT_USE_SSL was known as CURLOPT_FTP_SSL up to 7.16.4,
  * and the constants were known as CURLFTPSSL_*