From: Marco Bettini Date: Mon, 10 Nov 2025 15:23:14 +0000 (+0000) Subject: lib-imap-client: Propagate selected mailbox name to struct imapc_client_mailbox X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d5c46dd1f7004665a0ce455e700df5497d723c6d;p=thirdparty%2Fdovecot%2Fcore.git lib-imap-client: Propagate selected mailbox name to struct imapc_client_mailbox --- diff --git a/src/lib-imap-client/imapc-client-private.h b/src/lib-imap-client/imapc-client-private.h index 98bbb5b630..e18a2733df 100644 --- a/src/lib-imap-client/imapc-client-private.h +++ b/src/lib-imap-client/imapc-client-private.h @@ -56,6 +56,7 @@ struct imapc_client_mailbox { void *reopen_context; void *untagged_box_context; + char *name; bool reconnect_ok; bool reconnecting; diff --git a/src/lib-imap-client/imapc-client.c b/src/lib-imap-client/imapc-client.c index 23eb501bc6..054f0c57f9 100644 --- a/src/lib-imap-client/imapc-client.c +++ b/src/lib-imap-client/imapc-client.c @@ -351,7 +351,7 @@ void imapc_client_logout(struct imapc_client *client) } struct imapc_client_mailbox * -imapc_client_mailbox_open(struct imapc_client *client, +imapc_client_mailbox_open(struct imapc_client *client, const char *name, void *untagged_box_context) { struct imapc_client_mailbox *box; @@ -360,6 +360,7 @@ imapc_client_mailbox_open(struct imapc_client *client, box = i_new(struct imapc_client_mailbox, 1); box->client = client; box->untagged_box_context = untagged_box_context; + box->name = i_strdup(name); conn = imapc_client_get_unboxed_connection(client); conn->box = box; box->conn = conn->conn; @@ -421,6 +422,7 @@ void imapc_client_mailbox_close(struct imapc_client_mailbox **_box) imapc_msgmap_deinit(&box->msgmap); timeout_remove(&box->to_send_idle); + i_free(box->name); i_free(box); } diff --git a/src/lib-imap-client/imapc-client.h b/src/lib-imap-client/imapc-client.h index 4331669abb..b7ccd89db9 100644 --- a/src/lib-imap-client/imapc-client.h +++ b/src/lib-imap-client/imapc-client.h @@ -181,7 +181,7 @@ void imapc_client_stop(struct imapc_client *client); bool imapc_client_is_running(struct imapc_client *client); struct imapc_client_mailbox * -imapc_client_mailbox_open(struct imapc_client *client, +imapc_client_mailbox_open(struct imapc_client *client, const char *name, void *untagged_box_context); void imapc_client_mailbox_set_reopen_cb(struct imapc_client_mailbox *box, void (*callback)(void *context), diff --git a/src/lib-imap-client/test-imapc-client.c b/src/lib-imap-client/test-imapc-client.c index 332094bf80..8b86d9d5a3 100644 --- a/src/lib-imap-client/test-imapc-client.c +++ b/src/lib-imap-client/test-imapc-client.c @@ -691,7 +691,7 @@ static void test_imapc_reconnect_mailbox_client(void) imapc_login_last_reply = IMAPC_COMMAND_STATE_INVALID; /* select a mailbox */ - box = imapc_client_mailbox_open(imapc_client, NULL); + box = imapc_client_mailbox_open(imapc_client, NULL, NULL); imapc_client_mailbox_set_reopen_cb(box, imapc_reopen_callback, box); cmd = imapc_client_mailbox_cmd(box, imapc_command_callback, NULL); diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 270a65b815..d3a33804f4 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -785,7 +785,8 @@ int imapc_mailbox_select(struct imapc_mailbox *mbox) } mbox->client_box = - imapc_client_mailbox_open(mbox->storage->client->client, mbox); + imapc_client_mailbox_open(mbox->storage->client->client, + mailbox_get_name(&mbox->box), mbox); imapc_client_mailbox_set_reopen_cb(mbox->client_box, imapc_mailbox_reopen, mbox);