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:
// 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;
}