]> git.ipfire.org Git - pakfire.git/commitdiff
Revert "downloader: Remove separating between protocol types when handling result"
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 19 Apr 2021 14:18:33 +0000 (14:18 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 19 Apr 2021 14:18:33 +0000 (14:18 +0000)
This reverts commit 4eef07222a94297d75d73aaea0d3e24946ad6cee.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/downloader.c

index 5eb726090ca0126a428197772906a5bbbfa796b9..df0f4c14ba9aac08b7a1082a36b2afb394b5cd8f 100644 (file)
@@ -422,6 +422,7 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader,
                struct pakfire_transfer* transfer, int code) {
        CURL* h = transfer->handle;
 
+       int r;
        long protocol;
        const char* url;
        long response_code;
@@ -465,11 +466,40 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader,
        if (speed)
                DEBUG(downloader->pakfire, "  Download Speed: %ld bps\n", speed);
 
-       // Handle any errors
-       if (code)
-               return pakfire_transfer_fail(downloader, transfer, code);
+       switch (protocol) {
+               case CURLPROTO_FILE:
+                       // Handle any errors
+                       if (code)
+                               r = pakfire_transfer_fail(downloader, transfer, code);
+                       else
+                               r = pakfire_transfer_save(downloader, transfer);
+
+                       return r;
 
-       return pakfire_transfer_save(downloader, transfer);
+               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;
+       }
+
+       // Success
+       return 0;
 }
 
 static int pakfire_downloader_prepare_transfer(struct pakfire_downloader* downloader,