From d4c282fbd4bdc0bf08707db339ddbc911835c4d2 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 1 Feb 2025 14:10:03 +0000 Subject: [PATCH] httpclient: Implicitly handle relaunch Signed-off-by: Michael Tremer --- src/pakfire/httpclient.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/pakfire/httpclient.c b/src/pakfire/httpclient.c index fb9af9e6..9f0ba326 100644 --- a/src/pakfire/httpclient.c +++ b/src/pakfire/httpclient.c @@ -165,7 +165,6 @@ static struct pakfire_httpclient_xfer* pakfire_httpclient_xfer_find( return NULL; } - static int pakfire_httpclient_remove( struct pakfire_httpclient* self, struct pakfire_httpclient_xfer* e) { int r; @@ -197,6 +196,18 @@ static int pakfire_httpclient_launch_one( struct pakfire_httpclient* self, struct pakfire_httpclient_xfer* e) { int r; + // Remove the handle if we ware launching again + switch (e->status) { + case PAKFIRE_XFER_RUNNING: + r = pakfire_httpclient_remove(self, e); + if (r < 0) + return r; + break; + + default: + break; + } + // Prepare the xfer r = pakfire_xfer_prepare(e->xfer, self->progress, 0); if (r < 0) @@ -260,11 +271,6 @@ static int pakfire_httpclient_check(struct pakfire_httpclient* self) { return -EINVAL; } - // Remove the handle - r = pakfire_httpclient_remove(self, e); - if (r < 0) - return r; - // Call the done callback r = pakfire_xfer_done(xfer, self->loop, msg->data.result); if (r < 0) { -- 2.39.5