From: Timo Sirainen Date: Wed, 3 Feb 2021 23:09:57 +0000 (+0200) Subject: imapc: Add parent event X-Git-Tag: 2.3.15~153 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=27c92f1d020568363592b4e2e86ecf491da94fcb;p=thirdparty%2Fdovecot%2Fcore.git imapc: Add parent event --- diff --git a/src/auth/passdb-imap.c b/src/auth/passdb-imap.c index d4911c6eda..99657324e1 100644 --- a/src/auth/passdb-imap.c +++ b/src/auth/passdb-imap.c @@ -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; diff --git a/src/lib-imap-client/imapc-client-private.h b/src/lib-imap-client/imapc-client-private.h index f03631bc27..98c4e8e5e0 100644 --- a/src/lib-imap-client/imapc-client-private.h +++ b/src/lib-imap-client/imapc-client-private.h @@ -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; diff --git a/src/lib-imap-client/imapc-client.c b/src/lib-imap-client/imapc-client.c index 2c53b4a8c5..7ca4158a28 100644 --- a/src/lib-imap-client/imapc-client.c +++ b/src/lib-imap-client/imapc-client.c @@ -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); } diff --git a/src/lib-imap-client/imapc-client.h b/src/lib-imap-client/imapc-client.h index 430681e853..5c81be616c 100644 --- a/src/lib-imap-client/imapc-client.h +++ b/src/lib-imap-client/imapc-client.h @@ -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); diff --git a/src/lib-imap-client/test-imapc-client.c b/src/lib-imap-client/test-imapc-client.c index 637887ee91..9cd74d8282 100644 --- a/src/lib-imap-client/test-imapc-client.c +++ b/src/lib-imap-client/test-imapc-client.c @@ -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); diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 674c9d6833..a79c35f458 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -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);