]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imap-urlauth: imap-urlauth-client - Connect worker client last in client_create().
authorStephan Bosch <stephan.bosch@open-xchange.com>
Tue, 14 Feb 2023 01:26:42 +0000 (02:26 +0100)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 24 Mar 2023 07:14:54 +0000 (07:14 +0000)
In later commit the worker client will depend on full unitialization of main
client struct.

src/imap-urlauth/imap-urlauth-client.c

index 9f90b529d4878c9de8c8a7f193416680d65cf06f..d8b556a43974caf7bbe8d7ca160a7afee70ed436 100644 (file)
@@ -59,13 +59,6 @@ int client_create(const char *service, const char *username,
        event_set_append_log_prefix(client->event, t_strdup_printf(
                "user %s: ", username));
 
-       client->worker_client = imap_urlauth_worker_client_init(client);
-       if (imap_urlauth_worker_client_connect(client->worker_client) < 0) {
-               event_unref(&client->event);
-               i_free(client);
-               return -1;
-       }
-
        /* determine user's special privileges */
        i_array_init(&client->access_apps, 4);
        if (username != NULL) {
@@ -93,6 +86,12 @@ int client_create(const char *service, const char *username,
        imap_urlauth_client_count++;
        DLLIST_PREPEND(&imap_urlauth_clients, client);
 
+       client->worker_client = imap_urlauth_worker_client_init(client);
+       if (imap_urlauth_worker_client_connect(client->worker_client) < 0) {
+               client_destroy(client, "Failed to connect to worker");
+               return -1;
+       }
+
        imap_urlauth_refresh_proctitle();
        *client_r = client;
        return 0;