From: Michael Tremer Date: Wed, 25 Jun 2025 10:00:42 +0000 (+0000) Subject: client: Call the ready callback once we are successfully authenticated X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=491910bb847f020777e2cce897666d69103266c7;p=pakfire.git client: Call the ready callback once we are successfully authenticated Signed-off-by: Michael Tremer --- diff --git a/src/pakfire/client.c b/src/pakfire/client.c index 172c8e54..96bf46c3 100644 --- a/src/pakfire/client.c +++ b/src/pakfire/client.c @@ -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,