]> git.ipfire.org Git - pakfire.git/commitdiff
client: Call the ready callback once we are successfully authenticated
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 25 Jun 2025 10:00:42 +0000 (10:00 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 25 Jun 2025 10:00:42 +0000 (10:00 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/client.c

index 172c8e54d8473a97286ab970eabebb48ea76ad9b..96bf46c39f064090119a983578e7865e457f9d05 100644 (file)
@@ -337,6 +337,23 @@ void pakfire_client_set_ready_callback(struct pakfire_client* self,
        self->ready.data     = data;
 }
 
+// Called when the client has been initialized for the first time
+static int pakfire_client_ready(struct pakfire_client* self) {
+       int r;
+
+       // Call the callback only once
+       if (self->ready.callback) {
+               r = self->ready.callback(self, self->ready.data);
+               if (r < 0)
+                       return r;
+
+               // Reset the callback
+               pakfire_client_set_ready_callback(self, NULL, NULL);
+       }
+
+       return 0;
+}
+
 int pakfire_client_run(struct pakfire_client* self) {
        return pakfire_httpclient_run(self->httpclient, NULL);
 }
@@ -402,32 +419,8 @@ static int pakfire_client_auth_successful(
        if (r < 0)
                return r;
 
-       // Call the authentication callback
-       if (self->auth.callback) {
-               r = self->auth.callback(self,
-                               PAKFIRE_CLIENT_AUTH_SUCCESSFUL, self->auth.data);
-               if (r < 0)
-                       return r;
-       }
-
-       return 0;
-}
-
-/*
-       Called if the authentication failed
-*/
-static int pakfire_client_auth_failed(struct pakfire_client* self) {
-       int r;
-
-       // Call the authentication callback
-       if (self->auth.callback) {
-               r = self->auth.callback(self,
-                               PAKFIRE_CLIENT_AUTH_SUCCESSFUL, self->auth.data);
-               if (r < 0)
-                       return r;
-       }
-
-       return 0;
+       // We are now ready
+       return pakfire_client_ready(self);
 }
 
 static int pakfire_client_auth_response(struct pakfire_xfer* xfer,
@@ -439,8 +432,10 @@ static int pakfire_client_auth_response(struct pakfire_xfer* xfer,
                        return pakfire_client_auth_successful(client, response);
 
                default:
-                       return pakfire_client_auth_failed(client);
+                       ERROR(client->ctx, "Authentication failed\n");
        }
+
+       return 0;
 }
 
 int pakfire_client_auth_user(struct pakfire_client* self,