From: Michael Tremer Date: Thu, 13 Apr 2023 13:47:23 +0000 (+0000) Subject: Revert "downloader: Drop using deprecated CURLOPT_PROTOCOLS" X-Git-Tag: 0.9.29~195 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bf0f7d4ad237169f0da6a02c5b19981348616d30;p=pakfire.git Revert "downloader: Drop using deprecated CURLOPT_PROTOCOLS" This reverts commit de08af0247aa2bf56251a168eca186c701dce6c2. This is difficult to mirgate to since Debian Bullseye ships a version of cURL which does not support CURLOPT_PROTOCOL_STR, yet. So since on Bookworm there is only a deprecation warning, we will simply revert this patch for now and deal with the warning. Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/downloader.c b/src/libpakfire/downloader.c index ccb0b2498..1752d253b 100644 --- a/src/libpakfire/downloader.c +++ b/src/libpakfire/downloader.c @@ -397,7 +397,8 @@ static struct pakfire_transfer* pakfire_downloader_create_transfer( #endif // Limit protocols to HTTPS, HTTP, FTP and FILE - curl_easy_setopt(transfer->handle, CURLOPT_PROTOCOLS_STR, "HTTPS,HTTP,FTP,FILE"); + curl_easy_setopt(transfer->handle, CURLOPT_PROTOCOLS, + CURLPROTO_HTTPS|CURLPROTO_HTTP|CURLPROTO_FTP|CURLPROTO_FILE); // Reference back to this transfer curl_easy_setopt(transfer->handle, CURLOPT_PRIVATE, transfer); @@ -548,8 +549,9 @@ static int pakfire_transfer_fail(struct pakfire_downloader* downloader, static int pakfire_transfer_done(struct pakfire_downloader* downloader, struct pakfire_transfer* transfer, int code) { CURL* h = transfer->handle; + int r; - char* scheme = NULL; + long protocol; const char* url; long response_code; long http_version; @@ -571,7 +573,7 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader, } // Protocol - curl_easy_getinfo(h, CURLINFO_SCHEME, &scheme); + curl_easy_getinfo(h, CURLINFO_PROTOCOL, &protocol); // Effective URL curl_easy_getinfo(h, CURLINFO_EFFECTIVE_URL, &url); @@ -639,44 +641,44 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader, } } - // FILE - if (strcmp(scheme, "FILE") == 0) { - // Handle any errors - if (code) - r = pakfire_transfer_fail(downloader, transfer, code); - else - r = pakfire_transfer_save(downloader, transfer); - - return r; - - // HTTPS + HTTP - } else if ((strcmp(scheme, "HTTPS") == 0) || (strcmp(scheme, "HTTP") == 0)) { - switch (response_code) { - // 200 - OK - case 200: + switch (protocol) { + case CURLPROTO_FILE: + // Handle any errors + if (code) + r = pakfire_transfer_fail(downloader, transfer, code); + else r = pakfire_transfer_save(downloader, transfer); - if (r) - return r; - break; - // Treat all other response codes as an error - default: - r = pakfire_transfer_fail(downloader, transfer, code); - if (r) - return r; + return r; - // Error - return 1; - } + case CURLPROTO_HTTPS: + case CURLPROTO_HTTP: + switch (response_code) { + // 200 - OK + case 200: + r = pakfire_transfer_save(downloader, transfer); + if (r) + return r; + break; + + // Treat all other response codes as an error + default: + r = pakfire_transfer_fail(downloader, transfer, code); + if (r) + return r; + + // Error + return 1; + } + break; - // FTP - } else if (strcmp(scheme, "FTP") == 0) { - if (response_code == 226) - r = pakfire_transfer_save(downloader, transfer); - else - r = pakfire_transfer_fail(downloader, transfer, code); + case CURLPROTO_FTP: + if (response_code == 226) + r = pakfire_transfer_save(downloader, transfer); + else + r = pakfire_transfer_fail(downloader, transfer, code); - return r; + return r; } // Success