From: Michael Tremer Date: Wed, 1 Nov 2023 19:05:53 +0000 (+0000) Subject: xfer: Correctly truncate if the download failed X-Git-Tag: 0.9.30~1323 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=92cc235ad3b8fcff2b0bdfb295f17140894c4d75;p=pakfire.git xfer: Correctly truncate if the download failed Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/xfer.c b/src/libpakfire/xfer.c index dee5f7e85..975ab7c7c 100644 --- a/src/libpakfire/xfer.c +++ b/src/libpakfire/xfer.c @@ -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) {