]> git.ipfire.org Git - pakfire.git/commitdiff
Revert "downloader: Drop using deprecated CURLOPT_PROTOCOLS"
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 13 Apr 2023 13:47:23 +0000 (13:47 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 13 Apr 2023 13:47:23 +0000 (13:47 +0000)
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 <michael.tremer@ipfire.org>
src/libpakfire/downloader.c

index ccb0b2498e5c09616f21f424e91e7339ed0e94fb..1752d253b6df49ac1cbff0b5d3e1bb102693694d 100644 (file)
@@ -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