struct pakfire_transfer* transfer, int code) {
CURL* h = transfer->handle;
+ int r;
long protocol;
const char* url;
long response_code;
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,