]> git.ipfire.org Git - pakfire.git/commitdiff
worker: Store a reference to the daemon's HTTP client
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 4 Oct 2024 16:01:22 +0000 (16:01 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 4 Oct 2024 16:01:22 +0000 (16:01 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/daemon.c
src/libpakfire/include/pakfire/daemon.h
src/libpakfire/worker.c

index 5bf010f14886bddb1d6e8a88c7390424028d8d65..4de32f5abf60bc0c5411edfed8346be2277d5196 100644 (file)
@@ -723,6 +723,10 @@ sd_event* pakfire_daemon_loop(struct pakfire_daemon* daemon) {
        return sd_event_ref(daemon->loop);
 }
 
+struct pakfire_httpclient* pakfire_daemon_httpclient(struct pakfire_daemon* daemon) {
+       return pakfire_httpclient_ref(daemon->client);
+}
+
 int pakfire_daemon_main(struct pakfire_daemon* daemon) {
        int r;
 
index b2e11d843c7aaab7ea68ec83a9fb37e109d7ef14..62e4a7877868229b5e092cae5215ca04a5b09402 100644 (file)
@@ -34,6 +34,7 @@ struct pakfire_daemon* pakfire_daemon_ref(struct pakfire_daemon* daemon);
 struct pakfire_daemon* pakfire_daemon_unref(struct pakfire_daemon* daemon);
 
 sd_event* pakfire_daemon_loop(struct pakfire_daemon* daemon);
+struct pakfire_httpclient* pakfire_daemon_httpclient(struct pakfire_daemon* daemon);
 
 int pakfire_daemon_main(struct pakfire_daemon* daemon);
 
index f2f1626e7de2cd60fe091d410c11fbd68c4d9338..e77d8da6f97a58533d6842306a1c400d36e4cac8 100644 (file)
@@ -45,6 +45,9 @@ struct pakfire_worker {
        // Event Loop
        sd_event* loop;
 
+       // HTTP Client
+       struct pakfire_httpclient* client;
+
        uuid_t job_id;
 
        char name[NAME_MAX];
@@ -224,6 +227,8 @@ static int pakfire_parse_job(struct pakfire_worker* worker, json_object* data) {
 }
 
 static void pakfire_worker_free(struct pakfire_worker* worker) {
+       if (worker->client)
+               pakfire_httpclient_unref(worker->client);
        if (worker->loop)
                sd_event_unref(worker->loop);
        if (worker->daemon)
@@ -357,6 +362,14 @@ int pakfire_worker_create(struct pakfire_worker** worker, struct pakfire_ctx* ct
                goto ERROR;
        }
 
+       // Fetch a reference to the HTTP client
+       w->client = pakfire_daemon_httpclient(daemon);
+       if (!w->client) {
+               CTX_ERROR(w->ctx, "Could not fetch the HTTP client: %m\n");
+               r = -errno;
+               goto ERROR;
+       }
+
        // Initialize the PID file descriptor
        w->pidfd = -1;