]> git.ipfire.org Git - pakfire.git/commitdiff
downloader: Add reference to downloaders to transfers
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 8 Sep 2021 11:57:18 +0000 (11:57 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 8 Sep 2021 11:57:18 +0000 (11:57 +0000)
This is needed to call logging functions in callbacks.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/downloader.c

index 8befa70736d264d1935287604db8efe7a02219fc..dcf5908e821ad01644dd69fd20473c94ae3103e2 100644 (file)
@@ -52,6 +52,8 @@ struct pakfire_mirror {
 };
 
 struct pakfire_transfer {
+       struct pakfire_downloader* downloader;
+
        TAILQ_ENTRY(pakfire_transfer) nodes;
        CURL* handle;
 
@@ -275,6 +277,10 @@ static struct pakfire_transfer* pakfire_downloader_create_transfer(
        if (!transfer)
                return NULL;
 
+       // Keep a reference to downloader (without increasing the refcounter to avoid
+       // circular connections)
+       transfer->downloader = downloader;
+
        // Copy title
        if (title) {
                pakfire_string_set(transfer->title, title);
@@ -606,8 +612,8 @@ static size_t pakfire_downloader_write(char* data, size_t size, size_t nmemb, vo
        if (transfer->evp) {
                r = EVP_DigestUpdate(transfer->evp, data, nmemb);
                if (r != 1) {
-                       //ERROR(downloader->pakfire, "EVP_DigestUpdate failed: %s\n",
-                       //      ERR_error_string(ERR_get_error(), NULL));
+                       ERROR(transfer->downloader->pakfire, "EVP_DigestUpdate failed: %s\n",
+                               ERR_error_string(ERR_get_error(), NULL));
                        return 0;
                }
        }