]> git.ipfire.org Git - pakfire.git/commitdiff
httpclient: Implicitly handle relaunch
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 1 Feb 2025 14:10:03 +0000 (14:10 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 1 Feb 2025 14:10:03 +0000 (14:10 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/httpclient.c

index fb9af9e6d0b91231f1b966d3677743584c1a536f..9f0ba326339b7fdd1285e4363ccb2fb543bf88f8 100644 (file)
@@ -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) {