]> git.ipfire.org Git - pakfire.git/commitdiff
xfer: Correctly truncate if the download failed
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 1 Nov 2023 19:05:53 +0000 (19:05 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 1 Nov 2023 19:05:53 +0000 (19:05 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/xfer.c

index dee5f7e8566a2c88c78bed7c39598cc37d7e049c..975ab7c7cccdf1f92fd9d28fd643a3bca7b85f9d 100644 (file)
@@ -743,13 +743,21 @@ int pakfire_xfer_fail(struct pakfire_xfer* xfer, int code) {
 
        CTX_DEBUG(xfer->ctx, "Xfer failed\n");
 
-       // Get file descriptor
-       int fd = fileno(xfer->fin);
+       // Throw away any downloaded data
+       if (xfer->fin) {
+               // Get file descriptor
+               int fd = fileno(xfer->fin);
 
-       // Truncate downloaded data
-       r = ftruncate(fd, 0);
-       if (r)
-               return r;
+               // Truncate downloaded data
+               if (fd >= 0) {
+                       r = ftruncate(fd, 0);
+                       if (r)
+                               return r;
+               }
+
+               // Rewind
+               rewind(xfer->fin);
+       }
 
        // Did we use a mirror?
        if (xfer->mirror) {