From: Michael Tremer Date: Sat, 13 Mar 2021 14:06:49 +0000 (+0000) Subject: downloader: Use baseurl if no mirrors are configured X-Git-Tag: 0.9.28~1285^2~538 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9d9825747a2d1bbfe2c6084efb68b62710dde8f8;p=pakfire.git downloader: Use baseurl if no mirrors are configured Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/downloader.c b/src/libpakfire/downloader.c index afb154dc9..37528720c 100644 --- a/src/libpakfire/downloader.c +++ b/src/libpakfire/downloader.c @@ -384,9 +384,11 @@ int pakfire_downloader_add_transfer( DEBUG(downloader->pakfire, "Adding download of %s\n", url); // Do not allow relative URLs when no mirrors are set - if (!pakfire_url_is_absolute(url) && STAILQ_EMPTY(&downloader->mirrors)) { - ERROR(downloader->pakfire, "Relative URLs cannot be used without any mirrors set\n"); - return EINVAL; + if (!pakfire_url_is_absolute(url)) { + if (STAILQ_EMPTY(&downloader->mirrors) && !*downloader->baseurl) { + ERROR(downloader->pakfire, "Relative URLs cannot be used without any mirrors set\n"); + return EINVAL; + } } struct pakfire_transfer* transfer = calloc(1, sizeof(*transfer)); @@ -653,7 +655,7 @@ static int pakfire_downloader_activate_transfer(struct pakfire_downloader* downl curl_easy_setopt(transfer->handle, CURLOPT_URL, transfer->url); // Join path if we are using mirrors - } else { + } else if (!STAILQ_EMPTY(&downloader->mirrors)) { int r = pakfire_transfer_select_mirror(downloader, transfer); if (r) return r; @@ -667,6 +669,23 @@ static int pakfire_downloader_activate_transfer(struct pakfire_downloader* downl curl_easy_setopt(transfer->handle, CURLOPT_URL, url); free(url); + + // Use baseurl + } else if (*downloader->baseurl) { + char* url = pakfire_url_join(downloader->baseurl, transfer->url); + if (!url) { + ERROR(downloader->pakfire, "Error composing download URL: %s\n", + strerror(errno)); + return 1; + } + + curl_easy_setopt(transfer->handle, CURLOPT_URL, url); + free(url); + + // Cannot compose URL + } else { + ERROR(downloader->pakfire, "Could not set URL\n"); + return 1; } // Add the handle to cURL