]> git.ipfire.org Git - pakfire.git/commitdiff
downloader: Handle errors when using the file:// protocol
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 15 Apr 2021 16:29:58 +0000 (16:29 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 15 Apr 2021 16:29:58 +0000 (16:29 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/downloader.c

index d5578a92ac489b7cd7997861a314660e502c5692..b2929b09e33756a317d463e6b0490ae9db306ee0 100644 (file)
@@ -481,10 +481,13 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader,
 
        switch (protocol) {
                case CURLPROTO_FILE:
-                       r = pakfire_transfer_save(downloader, transfer);
-                       if (r)
-                               return r;
-                       break;
+                       // Handle any errors
+                       if (code)
+                               r = pakfire_transfer_fail(downloader, transfer, code);
+                       else
+                               r = pakfire_transfer_save(downloader, transfer);
+
+                       return r;
 
                case CURLPROTO_HTTPS:
                case CURLPROTO_HTTP:
@@ -649,16 +652,15 @@ static int pakfire_downloader_perform(
        // Perform the download
        r = curl_easy_perform(transfer->handle);
 
-       // Finish the progressbar
-       pakfire_progressbar_finish(downloader->progressbar);
-
-       if (r == CURLE_OK)
-               return pakfire_transfer_done(downloader, transfer, r);
+       // Handle result
+       r = pakfire_transfer_done(downloader, transfer, r);
 
-       // Handle errors
-       r = pakfire_transfer_fail(downloader, transfer, r);
+       // Try again?
        if (r == EAGAIN)
-               return pakfire_downloader_perform(downloader, transfer);
+               goto AGAIN;
+
+       // Finish the progressbar
+       pakfire_progressbar_finish(downloader->progressbar);
 
        return r;
 }