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));
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;
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