]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Add parent event
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 3 Feb 2021 23:09:57 +0000 (01:09 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Tue, 23 Mar 2021 07:40:58 +0000 (07:40 +0000)
src/auth/passdb-imap.c
src/lib-imap-client/imapc-client-private.h
src/lib-imap-client/imapc-client.c
src/lib-imap-client/imapc-client.h
src/lib-imap-client/test-imapc-client.c
src/lib-storage/index/imapc/imapc-storage.c

index d4911c6edaa24e695f7e55594a74f3366c2cc138..99657324e18cb47a2b35ee831c36ebf1b909e60c 100644 (file)
@@ -129,7 +129,7 @@ passdb_imap_verify_plain(struct auth_request *auth_request,
                "lookup host=%s port=%d", set.host, set.port);
 
        request = p_new(auth_request->pool, struct imap_auth_request, 1);
-       request->client = imapc_client_init(&set);
+       request->client = imapc_client_init(&set, authdb_event(auth_request));
        request->auth_request = auth_request;
        request->verify_callback = callback;
 
index f03631bc270c22e314801461f0744faefe472164..98c4e8e5e0b9a7c8fd0c13092e24dc28592e89ca 100644 (file)
@@ -15,6 +15,7 @@ struct imapc_client {
        pool_t pool;
        int refcount;
 
+       struct event *event;
        struct imapc_client_settings set;
        struct ssl_iostream_context *ssl_ctx;
 
index 2c53b4a8c58df974610b75d43f274d23318a429b..7ca4158a28c11e743adade9acd113da0d549bf03 100644 (file)
@@ -48,7 +48,8 @@ default_untagged_callback(const struct imapc_untagged_reply *reply ATTR_UNUSED,
 }
 
 struct imapc_client *
-imapc_client_init(const struct imapc_client_settings *set)
+imapc_client_init(const struct imapc_client_settings *set,
+                 struct event *event_parent)
 {
        struct imapc_client *client;
        const char *error;
@@ -61,6 +62,7 @@ imapc_client_init(const struct imapc_client_settings *set)
        client = p_new(pool, struct imapc_client, 1);
        client->pool = pool;
        client->refcount = 1;
+       client->event = event_create(event_parent);
 
        client->set.debug = set->debug;
        client->set.host = p_strdup(pool, set->host);
@@ -131,6 +133,7 @@ void imapc_client_unref(struct imapc_client **_client)
 
        if (client->ssl_ctx != NULL)
                ssl_iostream_context_unref(&client->ssl_ctx);
+       event_unref(&client->event);
        pool_unref(&client->pool);
 }
 
index 430681e85314caf70e94ac3eef5b95a9be55f6a1..5c81be616c5e33a6e98673f36bfaef0a88fdb7ac 100644 (file)
@@ -180,7 +180,8 @@ typedef void imapc_state_change_callback_t(void *context,
                                           const char *error);
 
 struct imapc_client *
-imapc_client_init(const struct imapc_client_settings *set);
+imapc_client_init(const struct imapc_client_settings *set,
+                 struct event *event_parent);
 void imapc_client_disconnect(struct imapc_client *client);
 void imapc_client_deinit(struct imapc_client **client);
 
index 637887ee91af3a38099739cd8919b161b526b797..9cd74d8282f1bbe2bef1570d881c726834785624 100644 (file)
@@ -240,7 +240,7 @@ test_run_client(const struct imapc_client_settings *client_set,
        i_sleep_msecs(100); /* wait a little for server setup */
 
        ioloop = io_loop_create();
-       imapc_client = imapc_client_init(client_set);
+       imapc_client = imapc_client_init(client_set, NULL);
        client_test();
        imapc_client_logout(imapc_client);
        test_assert(array_count(&imapc_cmd_last_replies) == 0);
index 674c9d683334110130af8bb5b14acd67dbfc55c7..a79c35f458809003042d1a1609824716aed93508 100644 (file)
@@ -357,7 +357,9 @@ int imapc_storage_client_create(struct mail_namespace *ns,
        client = i_new(struct imapc_storage_client, 1);
        client->refcount = 1;
        i_array_init(&client->untagged_callbacks, 16);
-       client->client = imapc_client_init(&set);
+       /* FIXME: storage->event would be better, but we first get here when
+          creating mailbox_list, and storage doesn't even exist yet. */
+       client->client = imapc_client_init(&set, ns->user->event);
        imapc_client_register_untagged(client->client,
                                       imapc_storage_client_untagged_cb, client);