return 0;
}
+/*
+ This function is being called when the client needs authentication and
+ does not have any credentials whatsoever.
+*/
+static int pakfire_client_auth_required(struct pakfire_client* self) {
+ // Call the authentication callback
+ if (self->auth.callback)
+ return self->auth.callback(self, self->auth.data);
+
+ ERROR(self->ctx, "Authentication required but no authentication callback set\n");
+
+ return -ENOTSUP;
+}
+
static int pakfire_client_init(sd_event_source* event, void* data) {
struct pakfire_client* self = data;
+ int r;
DEBUG(self->ctx, "Initializing client...\n");
- // XXX TODO
+ // Request authentication
+ r = pakfire_client_auth_required(self);
+ if (r < 0)
+ return r;
return 0;
}
} pakfire_client_auth_status;
typedef int (*pakfire_client_auth_callback)
- (struct pakfire_client* client, pakfire_client_auth_status status, void* data);
+ (struct pakfire_client* client, void* data);
int pakfire_client_set_auth_callback(struct pakfire_client* client,
pakfire_client_auth_callback callback, void* data);