]> git.ipfire.org Git - pakfire.git/commitdiff
downloader: Use a simple callback function to write received data
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 7 Sep 2021 16:50:26 +0000 (16:50 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 7 Sep 2021 16:50:26 +0000 (16:50 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/downloader.c

index 959c08c17d7dc9d7a715e4f689154380eaa82165..25852aa19adb476d168f7602b53cc385724e321f 100644 (file)
@@ -560,6 +560,13 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader,
        return 0;
 }
 
+static size_t pakfire_downloader_write(char* data, size_t size, size_t nmemb, void* userdata) {
+       struct pakfire_transfer* transfer = (struct pakfire_transfer*)userdata;
+
+       // Write everything to the allocated file descriptor
+       return fwrite(data, size, nmemb, transfer->f);
+}
+
 static int pakfire_downloader_prepare_transfer(struct pakfire_downloader* downloader,
                struct pakfire_transfer* transfer) {
        // Increment tries
@@ -616,8 +623,9 @@ static int pakfire_downloader_prepare_transfer(struct pakfire_downloader* downlo
                }
        }
 
-       // Write all data to the allocated file descriptor
-       curl_easy_setopt(transfer->handle, CURLOPT_WRITEDATA, transfer->f);
+       // Write all data to the callback function
+       curl_easy_setopt(transfer->handle, CURLOPT_WRITEFUNCTION, pakfire_downloader_write);
+       curl_easy_setopt(transfer->handle, CURLOPT_WRITEDATA, transfer);
 
        return 0;
 }