Message ID | patch-v4-2.5-fb308258e2b-20210730T175650Z-avarab@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 013c7e2b070f5b69d6585b0c18426a959f1bf739 |
Headers | show |
Series | drop support for ancient curl | expand |
On 30/07/2021 19:59, Ævar Arnfjörð Bjarmason wrote: > From: Jeff King <peff@peff.net> > > In the last commit we dropped support for curl < 7.11.1, let's > continue that and drop support for versions older than 7.16.0. This > allows us to get rid of some now-obsolete #ifdefs. > > Choosing 7.16.0 is a somewhat arbitrary cutoff: > > 1. It came out in October of 2006, almost 15 years ago. > Besides being a nice round number, around 10 years is > a common end-of-life support period, even for conservative > distributions. > > 2. That version introduced the curl_multi interface, which > gives us a lot of bang for the buck in removing #ifdefs > > RHEL 5 came with curl 7.15.5[1] (released in August 2006). RHEL 5's > extended life cycle program ended on 2020-11-30[1]. RHEL 6 comes with > curl 7.19.7 (released in November 2009), and RHEL 7 comes with > 7.29.0 (released in February 2013). > > 1. http://lore.kernel.org/git/873e1f31-2a96-5b72-2f20-a5816cad1b51@jupiterrise.com > > Signed-off-by: Jeff King <peff@peff.net> > Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> > --- [...] > diff --git a/http.c b/http.c > index 56182a89e25..ef00e930232 100644 > --- a/http.c > +++ b/http.c > @@ -26,10 +26,8 @@ ssize_t http_post_buffer = 16 * LARGE_PACKET_MAX; > > static int min_curl_sessions = 1; > static int curl_session_count; > -#ifdef USE_CURL_MULTI > static int max_requests = -1; > static CURLM *curlm; > -#endif > #ifndef NO_CURL_EASY_DUPHANDLE > static CURL *curl_default; > #endif > @@ -117,14 +115,6 @@ static int curl_empty_auth = -1; > > enum http_follow_config http_follow_config = HTTP_FOLLOW_INITIAL; > > -#if LIBCURL_VERSION_NUM >= 0x071700 > -/* Use CURLOPT_KEYPASSWD as is */ > -#elif LIBCURL_VERSION_NUM >= 0x070903 > -#define CURLOPT_KEYPASSWD CURLOPT_SSLKEYPASSWD > -#else > -#define CURLOPT_KEYPASSWD CURLOPT_SSLCERTPASSWD > -#endif In 0x071700, 0x17 == 23, so it seems that this chain of `#if`s distinguishes between three categories of curl versions: 1. version < 7.9.3 2. 7.9.3 <= version < 7.23.0 3. 7.23.0 <= version So it seems that this patch [1] drops support for curl < 7.23.0, while the subject line claims "drop support for curl < 7.16.0". [1]: already in branch master as commit 013c7e2b07 (http: drop support for curl < 7.16.0, 2021-07-30) > - > static struct credential cert_auth = CREDENTIAL_INIT; > static int ssl_cert_password_required; > static unsigned long http_auth_methods = CURLAUTH_ANY; > @@ -168,7 +158,6 @@ size_t fread_buffer(char *ptr, size_t eltsize, size_t nmemb, void *buffer_) > return size / eltsize; > } > > -#ifndef NO_CURL_IOCTL > curlioerr ioctl_buffer(CURL *handle, int cmd, void *clientp) > { > struct buffer *buffer = clientp; > @@ -185,7 +174,6 @@ curlioerr ioctl_buffer(CURL *handle, int cmd, void *clientp) > return CURLIOE_UNKNOWNCMD; > } > } > -#endif > > size_t fwrite_buffer(char *ptr, size_t eltsize, size_t nmemb, void *buffer_) > { > @@ -233,12 +221,9 @@ static void finish_active_slot(struct active_request_slot *slot) > > 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) > { > int num_messages; > @@ -266,7 +251,6 @@ static void process_curl_messages(void) > curl_message = curl_multi_info_read(curlm, &num_messages); > } > } > -#endif > > static int http_options(const char *var, const char *value, void *cb) > { > @@ -315,18 +299,14 @@ static int http_options(const char *var, const char *value, void *cb) > > if (!strcmp("http.minsessions", var)) { > min_curl_sessions = git_config_int(var, value); > -#ifndef USE_CURL_MULTI > if (min_curl_sessions > 1) > min_curl_sessions = 1; > -#endif > return 0; > } > -#ifdef USE_CURL_MULTI > if (!strcmp("http.maxrequests", var)) { > max_requests = git_config_int(var, value); > return 0; > } > -#endif > if (!strcmp("http.lowspeedlimit", var)) { > curl_low_speed_limit = (long)git_config_int(var, value); > return 0; > @@ -574,7 +554,7 @@ static void set_curl_keepalive(CURL *c) > curl_easy_setopt(c, CURLOPT_TCP_KEEPALIVE, 1); > } > > -#elif LIBCURL_VERSION_NUM >= 0x071000 > +#else > static int sockopt_callback(void *client, curl_socket_t fd, curlsocktype type) > { > int ka = 1; > @@ -595,12 +575,6 @@ static void set_curl_keepalive(CURL *c) > { > curl_easy_setopt(c, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); > } > - > -#else > -static void set_curl_keepalive(CURL *c) > -{ > - /* not supported on older curl versions */ > -} > #endif > > static void redact_sensitive_header(struct strbuf *header) > @@ -1121,7 +1095,6 @@ void http_init(struct remote *remote, const char *url, int proactive_auth) > no_pragma_header = curl_slist_append(http_copy_default_headers(), > "Pragma:"); > > -#ifdef USE_CURL_MULTI > { > char *http_max_requests = getenv("GIT_HTTP_MAX_REQUESTS"); > if (http_max_requests != NULL) > @@ -1131,7 +1104,6 @@ void http_init(struct remote *remote, const char *url, int proactive_auth) > curlm = curl_multi_init(); > if (!curlm) > die("curl_multi_init failed"); > -#endif > > if (getenv("GIT_SSL_NO_VERIFY")) > curl_ssl_verify = 0; > @@ -1154,10 +1126,8 @@ void http_init(struct remote *remote, const char *url, int proactive_auth) > curl_ssl_verify = 1; > > curl_session_count = 0; > -#ifdef USE_CURL_MULTI > if (max_requests < 1) > max_requests = DEFAULT_MAX_REQUESTS; > -#endif > > set_from_env(&http_proxy_ssl_cert, "GIT_PROXY_SSL_CERT"); > set_from_env(&http_proxy_ssl_key, "GIT_PROXY_SSL_KEY"); > @@ -1201,9 +1171,7 @@ void http_cleanup(void) > curl_easy_cleanup(curl_default); > #endif > > -#ifdef USE_CURL_MULTI > curl_multi_cleanup(curlm); > -#endif > curl_global_cleanup(); > > string_list_clear(&extra_http_headers, 0); > @@ -1250,7 +1218,6 @@ struct active_request_slot *get_active_slot(void) > struct active_request_slot *slot = active_queue_head; > struct active_request_slot *newslot; > > -#ifdef USE_CURL_MULTI > int num_transfers; > > /* Wait for a slot to open up if the queue is full */ > @@ -1259,7 +1226,6 @@ struct active_request_slot *get_active_slot(void) > if (num_transfers < active_requests) > process_curl_messages(); > } > -#endif > > while (slot != NULL && slot->in_use) > slot = slot->next; > @@ -1330,7 +1296,6 @@ struct active_request_slot *get_active_slot(void) > > int start_active_slot(struct active_request_slot *slot) > { > -#ifdef USE_CURL_MULTI > CURLMcode curlm_result = curl_multi_add_handle(curlm, slot->curl); > int num_transfers; > > @@ -1348,11 +1313,9 @@ int start_active_slot(struct active_request_slot *slot) > * something. > */ > curl_multi_perform(curlm, &num_transfers); > -#endif > return 1; > } > > -#ifdef USE_CURL_MULTI > struct fill_chain { > void *data; > int (*fill)(void *); > @@ -1411,11 +1374,9 @@ void step_active_slots(void) > fill_active_slots(); > } > } > -#endif > > void run_active_slot(struct active_request_slot *slot) > { > -#ifdef USE_CURL_MULTI > fd_set readfds; > fd_set writefds; > fd_set excfds; > @@ -1428,7 +1389,6 @@ void run_active_slot(struct active_request_slot *slot) > step_active_slots(); > > if (slot->in_use) { > -#if LIBCURL_VERSION_NUM >= 0x070f04 > long curl_timeout; > curl_multi_timeout(curlm, &curl_timeout); > if (curl_timeout == 0) { > @@ -1440,10 +1400,6 @@ void run_active_slot(struct active_request_slot *slot) > select_timeout.tv_sec = curl_timeout / 1000; > select_timeout.tv_usec = (curl_timeout % 1000) * 1000; > } > -#else > - select_timeout.tv_sec = 0; > - select_timeout.tv_usec = 50000; > -#endif > > max_fd = -1; > FD_ZERO(&readfds); > @@ -1466,12 +1422,6 @@ void run_active_slot(struct active_request_slot *slot) > select(max_fd+1, &readfds, &writefds, &excfds, &select_timeout); > } > } > -#else > - while (slot->in_use) { > - slot->curl_result = curl_easy_perform(slot->curl); > - finish_active_slot(slot); > - } > -#endif > } > > static void release_active_slot(struct active_request_slot *slot) > @@ -1485,9 +1435,7 @@ static void release_active_slot(struct active_request_slot *slot) > curl_session_count--; > } > } > -#ifdef USE_CURL_MULTI > fill_active_slots(); > -#endif > } > > void finish_all_active_slots(void) > @@ -1613,12 +1561,10 @@ static int handle_curl_result(struct slot_results *results) > } else { > if (results->http_connectcode == 407) > credential_reject(&proxy_auth); > -#if LIBCURL_VERSION_NUM >= 0x070c00 > if (!curl_errorstr[0]) > strlcpy(curl_errorstr, > curl_easy_strerror(results->curl_result), > sizeof(curl_errorstr)); > -#endif > return HTTP_ERROR; > } > } > diff --git a/http.h b/http.h > index d2f8cc56617..cb092622a73 100644 > --- a/http.h > +++ b/http.h > @@ -10,31 +10,12 @@ > #include "remote.h" > #include "url.h" > > -/* > - * We detect based on the cURL version if multi-transfer is > - * usable in this implementation and define this symbol accordingly. > - * This shouldn't be set by the Makefile or by the user (e.g. via CFLAGS). > - */ > -#undef USE_CURL_MULTI > - > -#if LIBCURL_VERSION_NUM >= 0x071000 > -#define USE_CURL_MULTI > #define DEFAULT_MAX_REQUESTS 5 > -#endif > - > -#if LIBCURL_VERSION_NUM >= 0x070c00 > -#define curl_global_init(a) curl_global_init_mem(a, xmalloc, free, \ > - xrealloc, xstrdup, xcalloc) > -#endif > > -#if (LIBCURL_VERSION_NUM < 0x070c04) || (LIBCURL_VERSION_NUM == 0x071000) > +#if LIBCURL_VERSION_NUM == 0x071000 > #define NO_CURL_EASY_DUPHANDLE > #endif > > -#if LIBCURL_VERSION_NUM < 0x070c03 > -#define NO_CURL_IOCTL > -#endif > - > /* > * CURLOPT_USE_SSL was known as CURLOPT_FTP_SSL up to 7.16.4, > * and the constants were known as CURLFTPSSL_* > @@ -72,9 +53,7 @@ struct buffer { > size_t fread_buffer(char *ptr, size_t eltsize, size_t nmemb, void *strbuf); > size_t fwrite_buffer(char *ptr, size_t eltsize, size_t nmemb, void *strbuf); > size_t fwrite_null(char *ptr, size_t eltsize, size_t nmemb, void *strbuf); > -#ifndef NO_CURL_IOCTL > curlioerr ioctl_buffer(CURL *handle, int cmd, void *clientp); > -#endif > > /* Slot lifecycle functions */ > struct active_request_slot *get_active_slot(void); > @@ -91,11 +70,9 @@ void finish_all_active_slots(void); > int run_one_slot(struct active_request_slot *slot, > struct slot_results *results); > > -#ifdef USE_CURL_MULTI > void fill_active_slots(void); > void add_fill_function(void *data, int (*fill)(void *)); > void step_active_slots(void); > -#endif > > void http_init(struct remote *remote, const char *url, > int proactive_auth); > diff --git a/imap-send.c b/imap-send.c > index a0540ba5cf4..49a5f8aa597 100644 > --- a/imap-send.c > +++ b/imap-send.c > @@ -1517,11 +1517,7 @@ static int curl_append_msgs_to_imap(struct imap_server_conf *server, > if (cred.username) { > if (res == CURLE_OK) > credential_approve(&cred); > -#if LIBCURL_VERSION_NUM >= 0x070d01 > else if (res == CURLE_LOGIN_DENIED) > -#else > - else > -#endif > credential_reject(&cred); > } > > diff --git a/remote-curl.c b/remote-curl.c > index e738ae2c48a..09f09aeece3 100644 > --- a/remote-curl.c > +++ b/remote-curl.c > @@ -706,7 +706,6 @@ static size_t rpc_out(void *ptr, size_t eltsize, > return avail; > } > > -#ifndef NO_CURL_IOCTL > static curlioerr rpc_ioctl(CURL *handle, int cmd, void *clientp) > { > struct rpc_state *rpc = clientp; > @@ -727,7 +726,6 @@ static curlioerr rpc_ioctl(CURL *handle, int cmd, void *clientp) > return CURLIOE_UNKNOWNCMD; > } > } > -#endif > > struct check_pktline_state { > char len_buf[4]; > @@ -946,10 +944,8 @@ static int post_rpc(struct rpc_state *rpc, int stateless_connect, int flush_rece > rpc->initial_buffer = 1; > curl_easy_setopt(slot->curl, CURLOPT_READFUNCTION, rpc_out); > curl_easy_setopt(slot->curl, CURLOPT_INFILE, rpc); > -#ifndef NO_CURL_IOCTL > curl_easy_setopt(slot->curl, CURLOPT_IOCTLFUNCTION, rpc_ioctl); > curl_easy_setopt(slot->curl, CURLOPT_IOCTLDATA, rpc); > -#endif > if (options.verbosity > 1) { > fprintf(stderr, "POST %s (chunked)\n", rpc->service_name); > fflush(stderr); >
On Sat, Sep 11, 2021 at 12:28:25AM +0200, Andrei Rybak wrote: > > enum http_follow_config http_follow_config = HTTP_FOLLOW_INITIAL; > > -#if LIBCURL_VERSION_NUM >= 0x071700 > > -/* Use CURLOPT_KEYPASSWD as is */ > > -#elif LIBCURL_VERSION_NUM >= 0x070903 > > -#define CURLOPT_KEYPASSWD CURLOPT_SSLKEYPASSWD > > -#else > > -#define CURLOPT_KEYPASSWD CURLOPT_SSLCERTPASSWD > > -#endif > > In 0x071700, 0x17 == 23, so it seems that this chain of `#if`s > distinguishes between three categories of curl versions: > > 1. version < 7.9.3 > 2. 7.9.3 <= version < 7.23.0 > 3. 7.23.0 <= version > > So it seems that this patch [1] drops support for curl < 7.23.0, while > the subject line claims "drop support for curl < 7.16.0". > > [1]: already in branch master as commit 013c7e2b07 (http: drop support > for curl < 7.16.0, 2021-07-30) Yes, you're right, though there's a little more going on. The same issue was raised in the original thread starting here: https://lore.kernel.org/git/xmqq1sok7i82.fsf@gitster.mtv.corp.google.com/ but unfortunately that seems to have been missed when the patches were reposted more recently. :( There's further discussion there, though. It turns out this was yet another decimal/hex confusion, and the correct version is actually 7.17.0. So it breaks things from 7.9.3 <= version < 7.17.0. But later in the series we bump the minimum to 7.19.4 anyway. So the patch is indeed wrong, but the series overall ends up correct. -Peff
Jeff King <peff@peff.net> writes:
> So the patch is indeed wrong, but the series overall ends up correct.
I guess that bisectability in a documentation topic does not matter,
so we can take the end result ;-)
On Sat, Sep 11, 2021 at 02:39:53PM -0700, Junio C Hamano wrote: > Jeff King <peff@peff.net> writes: > > > So the patch is indeed wrong, but the series overall ends up correct. > > I guess that bisectability in a documentation topic does not matter, > so we can take the end result ;-) Yes (well, not quite documentation, but it only matters if you have very specific antique versions of curl). But also, this is in the older series that already hit master. So while I would actually fix it up if it were currently in flight, the breakage is already enshrined in history. -Peff
diff --git a/http-push.c b/http-push.c index d7cb1675a2d..aa3de7c1086 100644 --- a/http-push.c +++ b/http-push.c @@ -203,10 +203,8 @@ static void curl_setup_http(CURL *curl, const char *url, curl_easy_setopt(curl, CURLOPT_INFILE, buffer); curl_easy_setopt(curl, CURLOPT_INFILESIZE, buffer->buf.len); curl_easy_setopt(curl, CURLOPT_READFUNCTION, fread_buffer); -#ifndef NO_CURL_IOCTL curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, ioctl_buffer); curl_easy_setopt(curl, CURLOPT_IOCTLDATA, buffer); -#endif curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_fn); curl_easy_setopt(curl, CURLOPT_NOBODY, 0); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, custom_req); @@ -249,8 +247,6 @@ static void process_response(void *callback_data) finish_request(request); } -#ifdef USE_CURL_MULTI - static void start_fetch_loose(struct transfer_request *request) { struct active_request_slot *slot; @@ -299,7 +295,6 @@ static void start_mkcol(struct transfer_request *request) FREE_AND_NULL(request->url); } } -#endif static void start_fetch_packed(struct transfer_request *request) { @@ -605,7 +600,6 @@ static void finish_request(struct transfer_request *request) } } -#ifdef USE_CURL_MULTI static int is_running_queue; static int fill_active_slot(void *unused) { @@ -629,7 +623,6 @@ static int fill_active_slot(void *unused) } return 0; } -#endif static void get_remote_object_list(unsigned char parent); @@ -658,10 +651,8 @@ static void add_fetch_request(struct object *obj) request->next = request_queue_head; request_queue_head = request; -#ifdef USE_CURL_MULTI fill_active_slots(); step_active_slots(); -#endif } static int add_send_request(struct object *obj, struct remote_lock *lock) @@ -696,10 +687,8 @@ static int add_send_request(struct object *obj, struct remote_lock *lock) request->next = request_queue_head; request_queue_head = request; -#ifdef USE_CURL_MULTI fill_active_slots(); step_active_slots(); -#endif return 1; } @@ -1682,21 +1671,15 @@ static int delete_remote_branch(const char *pattern, int force) static void run_request_queue(void) { -#ifdef USE_CURL_MULTI is_running_queue = 1; fill_active_slots(); add_fill_function(NULL, fill_active_slot); -#endif do { finish_all_active_slots(); -#ifdef USE_CURL_MULTI fill_active_slots(); -#endif } while (request_queue_head && !aborted); -#ifdef USE_CURL_MULTI is_running_queue = 0; -#endif } int cmd_main(int argc, const char **argv) @@ -1770,10 +1753,6 @@ int cmd_main(int argc, const char **argv) break; } -#ifndef USE_CURL_MULTI - die("git-push is not available for http/https repository when not compiled with USE_CURL_MULTI"); -#endif - if (!repo->url) usage(http_push_usage); @@ -1786,9 +1765,7 @@ int cmd_main(int argc, const char **argv) http_init(NULL, repo->url, 1); -#ifdef USE_CURL_MULTI is_running_queue = 0; -#endif /* Verify DAV compliance/lock support */ if (!locking_available()) { diff --git a/http-walker.c b/http-walker.c index 90d8ecb57ef..19e31623f04 100644 --- a/http-walker.c +++ b/http-walker.c @@ -127,7 +127,6 @@ static void release_object_request(struct object_request *obj_req) free(obj_req); } -#ifdef USE_CURL_MULTI static int fill_active_slot(struct walker *walker) { struct object_request *obj_req; @@ -146,7 +145,6 @@ static int fill_active_slot(struct walker *walker) } return 0; } -#endif static void prefetch(struct walker *walker, unsigned char *sha1) { @@ -163,10 +161,8 @@ static void prefetch(struct walker *walker, unsigned char *sha1) http_is_verbose = walker->get_verbosely; list_add_tail(&newreq->node, &object_queue_head); -#ifdef USE_CURL_MULTI fill_active_slots(); step_active_slots(); -#endif } static int is_alternate_allowed(const char *url) @@ -357,11 +353,9 @@ static void fetch_alternates(struct walker *walker, const char *base) * wait for them to arrive and return to processing this request's * curl message */ -#ifdef USE_CURL_MULTI while (cdata->got_alternates == 0) { step_active_slots(); } -#endif /* Nothing to do if they've already been fetched */ if (cdata->got_alternates == 1) @@ -505,12 +499,8 @@ static int fetch_object(struct walker *walker, unsigned char *hash) return 0; } -#ifdef USE_CURL_MULTI while (obj_req->state == WAITING) step_active_slots(); -#else - start_object_request(walker, obj_req); -#endif /* * obj_req->req might change when fetching alternates in the callback @@ -623,9 +613,7 @@ struct walker *get_http_walker(const char *url) walker->cleanup = cleanup; walker->data = data; -#ifdef USE_CURL_MULTI add_fill_function(walker, (int (*)(void *)) fill_active_slot); -#endif return walker; } diff --git a/http.c b/http.c index 56182a89e25..ef00e930232 100644 --- a/http.c +++ b/http.c @@ -26,10 +26,8 @@ ssize_t http_post_buffer = 16 * LARGE_PACKET_MAX; static int min_curl_sessions = 1; static int curl_session_count; -#ifdef USE_CURL_MULTI static int max_requests = -1; static CURLM *curlm; -#endif #ifndef NO_CURL_EASY_DUPHANDLE static CURL *curl_default; #endif @@ -117,14 +115,6 @@ static int curl_empty_auth = -1; enum http_follow_config http_follow_config = HTTP_FOLLOW_INITIAL; -#if LIBCURL_VERSION_NUM >= 0x071700 -/* Use CURLOPT_KEYPASSWD as is */ -#elif LIBCURL_VERSION_NUM >= 0x070903 -#define CURLOPT_KEYPASSWD CURLOPT_SSLKEYPASSWD -#else -#define CURLOPT_KEYPASSWD CURLOPT_SSLCERTPASSWD -#endif - static struct credential cert_auth = CREDENTIAL_INIT; static int ssl_cert_password_required; static unsigned long http_auth_methods = CURLAUTH_ANY; @@ -168,7 +158,6 @@ size_t fread_buffer(char *ptr, size_t eltsize, size_t nmemb, void *buffer_) return size / eltsize; } -#ifndef NO_CURL_IOCTL curlioerr ioctl_buffer(CURL *handle, int cmd, void *clientp) { struct buffer *buffer = clientp; @@ -185,7 +174,6 @@ curlioerr ioctl_buffer(CURL *handle, int cmd, void *clientp) return CURLIOE_UNKNOWNCMD; } } -#endif size_t fwrite_buffer(char *ptr, size_t eltsize, size_t nmemb, void *buffer_) { @@ -233,12 +221,9 @@ static void finish_active_slot(struct active_request_slot *slot) 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) { int num_messages; @@ -266,7 +251,6 @@ static void process_curl_messages(void) curl_message = curl_multi_info_read(curlm, &num_messages); } } -#endif static int http_options(const char *var, const char *value, void *cb) { @@ -315,18 +299,14 @@ static int http_options(const char *var, const char *value, void *cb) if (!strcmp("http.minsessions", var)) { min_curl_sessions = git_config_int(var, value); -#ifndef USE_CURL_MULTI if (min_curl_sessions > 1) min_curl_sessions = 1; -#endif return 0; } -#ifdef USE_CURL_MULTI if (!strcmp("http.maxrequests", var)) { max_requests = git_config_int(var, value); return 0; } -#endif if (!strcmp("http.lowspeedlimit", var)) { curl_low_speed_limit = (long)git_config_int(var, value); return 0; @@ -574,7 +554,7 @@ static void set_curl_keepalive(CURL *c) curl_easy_setopt(c, CURLOPT_TCP_KEEPALIVE, 1); } -#elif LIBCURL_VERSION_NUM >= 0x071000 +#else static int sockopt_callback(void *client, curl_socket_t fd, curlsocktype type) { int ka = 1; @@ -595,12 +575,6 @@ static void set_curl_keepalive(CURL *c) { curl_easy_setopt(c, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); } - -#else -static void set_curl_keepalive(CURL *c) -{ - /* not supported on older curl versions */ -} #endif static void redact_sensitive_header(struct strbuf *header) @@ -1121,7 +1095,6 @@ void http_init(struct remote *remote, const char *url, int proactive_auth) no_pragma_header = curl_slist_append(http_copy_default_headers(), "Pragma:"); -#ifdef USE_CURL_MULTI { char *http_max_requests = getenv("GIT_HTTP_MAX_REQUESTS"); if (http_max_requests != NULL) @@ -1131,7 +1104,6 @@ void http_init(struct remote *remote, const char *url, int proactive_auth) curlm = curl_multi_init(); if (!curlm) die("curl_multi_init failed"); -#endif if (getenv("GIT_SSL_NO_VERIFY")) curl_ssl_verify = 0; @@ -1154,10 +1126,8 @@ void http_init(struct remote *remote, const char *url, int proactive_auth) curl_ssl_verify = 1; curl_session_count = 0; -#ifdef USE_CURL_MULTI if (max_requests < 1) max_requests = DEFAULT_MAX_REQUESTS; -#endif set_from_env(&http_proxy_ssl_cert, "GIT_PROXY_SSL_CERT"); set_from_env(&http_proxy_ssl_key, "GIT_PROXY_SSL_KEY"); @@ -1201,9 +1171,7 @@ void http_cleanup(void) curl_easy_cleanup(curl_default); #endif -#ifdef USE_CURL_MULTI curl_multi_cleanup(curlm); -#endif curl_global_cleanup(); string_list_clear(&extra_http_headers, 0); @@ -1250,7 +1218,6 @@ struct active_request_slot *get_active_slot(void) struct active_request_slot *slot = active_queue_head; struct active_request_slot *newslot; -#ifdef USE_CURL_MULTI int num_transfers; /* Wait for a slot to open up if the queue is full */ @@ -1259,7 +1226,6 @@ struct active_request_slot *get_active_slot(void) if (num_transfers < active_requests) process_curl_messages(); } -#endif while (slot != NULL && slot->in_use) slot = slot->next; @@ -1330,7 +1296,6 @@ struct active_request_slot *get_active_slot(void) int start_active_slot(struct active_request_slot *slot) { -#ifdef USE_CURL_MULTI CURLMcode curlm_result = curl_multi_add_handle(curlm, slot->curl); int num_transfers; @@ -1348,11 +1313,9 @@ int start_active_slot(struct active_request_slot *slot) * something. */ curl_multi_perform(curlm, &num_transfers); -#endif return 1; } -#ifdef USE_CURL_MULTI struct fill_chain { void *data; int (*fill)(void *); @@ -1411,11 +1374,9 @@ void step_active_slots(void) fill_active_slots(); } } -#endif void run_active_slot(struct active_request_slot *slot) { -#ifdef USE_CURL_MULTI fd_set readfds; fd_set writefds; fd_set excfds; @@ -1428,7 +1389,6 @@ void run_active_slot(struct active_request_slot *slot) step_active_slots(); if (slot->in_use) { -#if LIBCURL_VERSION_NUM >= 0x070f04 long curl_timeout; curl_multi_timeout(curlm, &curl_timeout); if (curl_timeout == 0) { @@ -1440,10 +1400,6 @@ void run_active_slot(struct active_request_slot *slot) select_timeout.tv_sec = curl_timeout / 1000; select_timeout.tv_usec = (curl_timeout % 1000) * 1000; } -#else - select_timeout.tv_sec = 0; - select_timeout.tv_usec = 50000; -#endif max_fd = -1; FD_ZERO(&readfds); @@ -1466,12 +1422,6 @@ void run_active_slot(struct active_request_slot *slot) select(max_fd+1, &readfds, &writefds, &excfds, &select_timeout); } } -#else - while (slot->in_use) { - slot->curl_result = curl_easy_perform(slot->curl); - finish_active_slot(slot); - } -#endif } static void release_active_slot(struct active_request_slot *slot) @@ -1485,9 +1435,7 @@ static void release_active_slot(struct active_request_slot *slot) curl_session_count--; } } -#ifdef USE_CURL_MULTI fill_active_slots(); -#endif } void finish_all_active_slots(void) @@ -1613,12 +1561,10 @@ static int handle_curl_result(struct slot_results *results) } else { if (results->http_connectcode == 407) credential_reject(&proxy_auth); -#if LIBCURL_VERSION_NUM >= 0x070c00 if (!curl_errorstr[0]) strlcpy(curl_errorstr, curl_easy_strerror(results->curl_result), sizeof(curl_errorstr)); -#endif return HTTP_ERROR; } } diff --git a/http.h b/http.h index d2f8cc56617..cb092622a73 100644 --- a/http.h +++ b/http.h @@ -10,31 +10,12 @@ #include "remote.h" #include "url.h" -/* - * We detect based on the cURL version if multi-transfer is - * usable in this implementation and define this symbol accordingly. - * This shouldn't be set by the Makefile or by the user (e.g. via CFLAGS). - */ -#undef USE_CURL_MULTI - -#if LIBCURL_VERSION_NUM >= 0x071000 -#define USE_CURL_MULTI #define DEFAULT_MAX_REQUESTS 5 -#endif - -#if LIBCURL_VERSION_NUM >= 0x070c00 -#define curl_global_init(a) curl_global_init_mem(a, xmalloc, free, \ - xrealloc, xstrdup, xcalloc) -#endif -#if (LIBCURL_VERSION_NUM < 0x070c04) || (LIBCURL_VERSION_NUM == 0x071000) +#if LIBCURL_VERSION_NUM == 0x071000 #define NO_CURL_EASY_DUPHANDLE #endif -#if LIBCURL_VERSION_NUM < 0x070c03 -#define NO_CURL_IOCTL -#endif - /* * CURLOPT_USE_SSL was known as CURLOPT_FTP_SSL up to 7.16.4, * and the constants were known as CURLFTPSSL_* @@ -72,9 +53,7 @@ struct buffer { size_t fread_buffer(char *ptr, size_t eltsize, size_t nmemb, void *strbuf); size_t fwrite_buffer(char *ptr, size_t eltsize, size_t nmemb, void *strbuf); size_t fwrite_null(char *ptr, size_t eltsize, size_t nmemb, void *strbuf); -#ifndef NO_CURL_IOCTL curlioerr ioctl_buffer(CURL *handle, int cmd, void *clientp); -#endif /* Slot lifecycle functions */ struct active_request_slot *get_active_slot(void); @@ -91,11 +70,9 @@ void finish_all_active_slots(void); int run_one_slot(struct active_request_slot *slot, struct slot_results *results); -#ifdef USE_CURL_MULTI void fill_active_slots(void); void add_fill_function(void *data, int (*fill)(void *)); void step_active_slots(void); -#endif void http_init(struct remote *remote, const char *url, int proactive_auth); diff --git a/imap-send.c b/imap-send.c index a0540ba5cf4..49a5f8aa597 100644 --- a/imap-send.c +++ b/imap-send.c @@ -1517,11 +1517,7 @@ static int curl_append_msgs_to_imap(struct imap_server_conf *server, if (cred.username) { if (res == CURLE_OK) credential_approve(&cred); -#if LIBCURL_VERSION_NUM >= 0x070d01 else if (res == CURLE_LOGIN_DENIED) -#else - else -#endif credential_reject(&cred); } diff --git a/remote-curl.c b/remote-curl.c index e738ae2c48a..09f09aeece3 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -706,7 +706,6 @@ static size_t rpc_out(void *ptr, size_t eltsize, return avail; } -#ifndef NO_CURL_IOCTL static curlioerr rpc_ioctl(CURL *handle, int cmd, void *clientp) { struct rpc_state *rpc = clientp; @@ -727,7 +726,6 @@ static curlioerr rpc_ioctl(CURL *handle, int cmd, void *clientp) return CURLIOE_UNKNOWNCMD; } } -#endif struct check_pktline_state { char len_buf[4]; @@ -946,10 +944,8 @@ static int post_rpc(struct rpc_state *rpc, int stateless_connect, int flush_rece rpc->initial_buffer = 1; curl_easy_setopt(slot->curl, CURLOPT_READFUNCTION, rpc_out); curl_easy_setopt(slot->curl, CURLOPT_INFILE, rpc); -#ifndef NO_CURL_IOCTL curl_easy_setopt(slot->curl, CURLOPT_IOCTLFUNCTION, rpc_ioctl); curl_easy_setopt(slot->curl, CURLOPT_IOCTLDATA, rpc); -#endif if (options.verbosity > 1) { fprintf(stderr, "POST %s (chunked)\n", rpc->service_name); fflush(stderr);