]> git.ipfire.org Git - pakfire.git/commitdiff
downloader: Allow access to the effective URL
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 19 Oct 2023 20:32:53 +0000 (20:32 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 19 Oct 2023 20:32:53 +0000 (20:32 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/downloader.c
src/libpakfire/include/pakfire/downloader.h

index 57b34e2b44f55fac599d2642861f987a6f8beb6b..f437e02b1bf6dddbb6949371bdd09b95f66e6552 100644 (file)
@@ -101,6 +101,9 @@ struct pakfire_transfer {
        struct pakfire_mirrorlist* mirrors;
        struct pakfire_mirror* mirror;
 
+       // Effective URL
+       const char* effective_url;
+
        // Authentication
        unsigned int auth;
 };
@@ -534,6 +537,10 @@ int pakfire_downloader_transfer_set_baseurl(
        return pakfire_string_set(transfer->baseurl, baseurl);
 }
 
+const char* pakfire_downloader_transfer_get_effective_url(struct pakfire_transfer* transfer) {
+       return transfer->effective_url;
+}
+
 int pakfire_downloader_transfer_set_mirrorlist(
                struct pakfire_transfer* transfer, struct pakfire_mirrorlist* mirrors) {
        if (transfer->mirrors)
@@ -847,7 +854,6 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader,
        CURL* h = transfer->handle;
        int r;
        char* scheme = NULL;
-       const char* url;
        long response_code;
        long http_version;
        double total_time;
@@ -876,9 +882,9 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader,
        curl_easy_getinfo(h, CURLINFO_SCHEME, &scheme);
 
        // Effective URL
-       curl_easy_getinfo(h, CURLINFO_EFFECTIVE_URL, &url);
-       if (url)
-               CTX_DEBUG(downloader->ctx, "  Effective URL: %s\n", url);
+       curl_easy_getinfo(h, CURLINFO_EFFECTIVE_URL, &transfer->effective_url);
+       if (transfer->effective_url)
+               CTX_DEBUG(downloader->ctx, "  Effective URL: %s\n", transfer->effective_url);
 
        // Response code
        curl_easy_getinfo(h, CURLINFO_RESPONSE_CODE, &response_code);
@@ -923,7 +929,7 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader,
                        char* expected_hexdigest = __pakfire_hexlify(transfer->expected_digest,
                                transfer->expected_digest_length);
 
-                       CTX_ERROR(downloader->ctx, "Download checksum for %s didn't match:\n", url);
+                       CTX_ERROR(downloader->ctx, "Download checksum for %s didn't match:\n", transfer->effective_url);
                        CTX_ERROR(downloader->ctx, "  Expected: %s\n", expected_hexdigest);
                        CTX_ERROR(downloader->ctx, "  Computed: %s\n", computed_hexdigest);
 
index f4b9061bdf75dfce5a7c15bb8626b5846ee7185c..aed84475ad8880876de5a6e235d517ea90936f3a 100644 (file)
@@ -50,6 +50,7 @@ int pakfire_downloader_transfer_set_title(
        struct pakfire_transfer* transfer, const char* title);
 int pakfire_downloader_transfer_set_baseurl(
        struct pakfire_transfer* transfer, const char* baseurl);
+const char* pakfire_downloader_transfer_get_effective_url(struct pakfire_transfer* transfer);
 int pakfire_downloader_transfer_set_mirrorlist(
        struct pakfire_transfer* transfer, struct pakfire_mirrorlist* mirrors);
 int pakfire_downloader_transfer_set_size(