From: Michael Tremer Date: Thu, 15 Apr 2021 16:29:58 +0000 (+0000) Subject: downloader: Handle errors when using the file:// protocol X-Git-Tag: 0.9.28~1285^2~362 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6781e34e9b93ea0c89b2279fb9e4f90eb408df65;p=pakfire.git downloader: Handle errors when using the file:// protocol Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/downloader.c b/src/libpakfire/downloader.c index d5578a92a..b2929b09e 100644 --- a/src/libpakfire/downloader.c +++ b/src/libpakfire/downloader.c @@ -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; }