mirror of
https://github.com/git/git.git
synced 2024-11-23 18:05:29 +08:00
http: drop support for curl < 7.19.4
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" inaeae4db174
(http: create function to get curl allowed protocols, 2016-12-14), and fixed in v2.15.0 inf18777ba6e
(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 byf18777ba6e
(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>
This commit is contained in:
parent
013c7e2b07
commit
644de29e22
50
http.c
50
http.c
@ -28,9 +28,7 @@ static int min_curl_sessions = 1;
|
|||||||
static int curl_session_count;
|
static int curl_session_count;
|
||||||
static int max_requests = -1;
|
static int max_requests = -1;
|
||||||
static CURLM *curlm;
|
static CURLM *curlm;
|
||||||
#ifndef NO_CURL_EASY_DUPHANDLE
|
|
||||||
static CURL *curl_default;
|
static CURL *curl_default;
|
||||||
#endif
|
|
||||||
|
|
||||||
#define PREV_BUF_SIZE 4096
|
#define PREV_BUF_SIZE 4096
|
||||||
|
|
||||||
@ -440,24 +438,8 @@ static void init_curl_http_auth(CURL *result)
|
|||||||
|
|
||||||
credential_fill(&http_auth);
|
credential_fill(&http_auth);
|
||||||
|
|
||||||
#if LIBCURL_VERSION_NUM >= 0x071301
|
|
||||||
curl_easy_setopt(result, CURLOPT_USERNAME, http_auth.username);
|
curl_easy_setopt(result, CURLOPT_USERNAME, http_auth.username);
|
||||||
curl_easy_setopt(result, CURLOPT_PASSWORD, http_auth.password);
|
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 */
|
/* *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)
|
static void set_proxyauth_name_password(CURL *result)
|
||||||
{
|
{
|
||||||
#if LIBCURL_VERSION_NUM >= 0x071301
|
|
||||||
curl_easy_setopt(result, CURLOPT_PROXYUSERNAME,
|
curl_easy_setopt(result, CURLOPT_PROXYUSERNAME,
|
||||||
proxy_auth.username);
|
proxy_auth.username);
|
||||||
curl_easy_setopt(result, CURLOPT_PROXYPASSWORD,
|
curl_easy_setopt(result, CURLOPT_PROXYPASSWORD,
|
||||||
proxy_auth.password);
|
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)
|
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);
|
curl_easy_setopt(handle, CURLOPT_DEBUGDATA, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CURLPROTO_HTTP
|
|
||||||
static long get_curl_allowed_protocols(int from_user)
|
static long get_curl_allowed_protocols(int from_user)
|
||||||
{
|
{
|
||||||
long allowed_protocols = 0;
|
long allowed_protocols = 0;
|
||||||
@ -764,7 +733,6 @@ static long get_curl_allowed_protocols(int from_user)
|
|||||||
|
|
||||||
return allowed_protocols;
|
return allowed_protocols;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LIBCURL_VERSION_NUM >=0x072f00
|
#if LIBCURL_VERSION_NUM >=0x072f00
|
||||||
static int get_curl_http_version_opt(const char *version_string, long *opt)
|
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);
|
curl_easy_setopt(result, CURLOPT_MAXREDIRS, 20);
|
||||||
#if LIBCURL_VERSION_NUM >= 0x071301
|
|
||||||
curl_easy_setopt(result, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
|
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,
|
curl_easy_setopt(result, CURLOPT_REDIR_PROTOCOLS,
|
||||||
get_curl_allowed_protocols(0));
|
get_curl_allowed_protocols(0));
|
||||||
curl_easy_setopt(result, CURLOPT_PROTOCOLS,
|
curl_easy_setopt(result, CURLOPT_PROTOCOLS,
|
||||||
get_curl_allowed_protocols(-1));
|
get_curl_allowed_protocols(-1));
|
||||||
#else
|
|
||||||
warning(_("Protocol restrictions not supported with cURL < 7.19.4"));
|
|
||||||
#endif
|
|
||||||
if (getenv("GIT_CURL_VERBOSE"))
|
if (getenv("GIT_CURL_VERBOSE"))
|
||||||
http_trace_curl_no_data();
|
http_trace_curl_no_data();
|
||||||
setup_curl_trace(result);
|
setup_curl_trace(result);
|
||||||
@ -1012,11 +972,9 @@ static CURL *get_curl_handle(void)
|
|||||||
die("Invalid proxy URL '%s'", curl_http_proxy);
|
die("Invalid proxy URL '%s'", curl_http_proxy);
|
||||||
|
|
||||||
curl_easy_setopt(result, CURLOPT_PROXY, proxy_auth.host);
|
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"));
|
||||||
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);
|
curl_easy_setopt(result, CURLOPT_NOPROXY, curl_no_proxy);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
init_curl_proxy_auth(result);
|
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;
|
ssl_cert_password_required = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NO_CURL_EASY_DUPHANDLE
|
|
||||||
curl_default = get_curl_handle();
|
curl_default = get_curl_handle();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void http_cleanup(void)
|
void http_cleanup(void)
|
||||||
@ -1167,9 +1123,7 @@ void http_cleanup(void)
|
|||||||
}
|
}
|
||||||
active_queue_head = NULL;
|
active_queue_head = NULL;
|
||||||
|
|
||||||
#ifndef NO_CURL_EASY_DUPHANDLE
|
|
||||||
curl_easy_cleanup(curl_default);
|
curl_easy_cleanup(curl_default);
|
||||||
#endif
|
|
||||||
|
|
||||||
curl_multi_cleanup(curlm);
|
curl_multi_cleanup(curlm);
|
||||||
curl_global_cleanup();
|
curl_global_cleanup();
|
||||||
@ -1248,11 +1202,7 @@ struct active_request_slot *get_active_slot(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (slot->curl == NULL) {
|
if (slot->curl == NULL) {
|
||||||
#ifdef NO_CURL_EASY_DUPHANDLE
|
|
||||||
slot->curl = get_curl_handle();
|
|
||||||
#else
|
|
||||||
slot->curl = curl_easy_duphandle(curl_default);
|
slot->curl = curl_easy_duphandle(curl_default);
|
||||||
#endif
|
|
||||||
curl_session_count++;
|
curl_session_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
http.h
4
http.h
@ -12,10 +12,6 @@
|
|||||||
|
|
||||||
#define DEFAULT_MAX_REQUESTS 5
|
#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,
|
* CURLOPT_USE_SSL was known as CURLOPT_FTP_SSL up to 7.16.4,
|
||||||
* and the constants were known as CURLFTPSSL_*
|
* and the constants were known as CURLFTPSSL_*
|
||||||
|
Loading…
Reference in New Issue
Block a user