struct pakfire_ctx* ctx;
int nrefs;
+ // Flags
+ enum {
+ PAKFIRE_HTTPCLIENT_OWN_LOOP = (1 << 0),
+ } flags;
+
// Base URL
char baseurl[PATH_MAX];
unsigned int total_downloadsize;
};
+static int pakfire_httpclient_has_flag(struct pakfire_httpclient* self, int flags) {
+ return self->flags & flags;
+}
+
static int pakfire_httpclient_xfer_create(
struct pakfire_httpclient_xfer** x, struct pakfire_xfer* xfer) {
struct pakfire_httpclient_xfer* e = NULL;
}
}
- // Terminate the event loop if there are no more transfers left
- if (client->still_running <= 0)
- return sd_event_exit(client->loop, 0);
+ // If we control the loop, terminate it if there are no more transfers left
+ if (pakfire_httpclient_has_flag(client, PAKFIRE_HTTPCLIENT_OWN_LOOP)) {
+ if (client->still_running <= 0)
+ return sd_event_exit(client->loop, 0);
+ }
return 0;
}
return r;
}
+
+ // This is our very own loop
+ client->flags |= PAKFIRE_HTTPCLIENT_OWN_LOOP;
}
// Create a new timer