]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-imap-client: Propagate selected mailbox name to struct imapc_client_mailbox
authorMarco Bettini <marco.bettini@open-xchange.com>
Mon, 10 Nov 2025 15:23:14 +0000 (15:23 +0000)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 24 Nov 2025 12:20:11 +0000 (12:20 +0000)
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 98bbb5b630b3cb5399564082a1fd0a044c3af66a..e18a2733df250b26cb89ec68050a2425c99bfe97 100644 (file)
@@ -56,6 +56,7 @@ struct imapc_client_mailbox {
        void *reopen_context;
 
        void *untagged_box_context;
+       char *name;
 
        bool reconnect_ok;
        bool reconnecting;
index 23eb501bc67cac74abbcfb862c41597f7363b064..054f0c57f9108556a15e18019503701cc9118ae2 100644 (file)
@@ -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);
 }
 
index 4331669abb5886e4349951d926910608919dbb87..b7ccd89db943fd57ad3f01d000530cbe2a855b4c 100644 (file)
@@ -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),
index 332094bf807c2a814fb986cd4da4fbbeff835a4e..8b86d9d5a3f53fac4e0547054b4557e06ddebb67 100644 (file)
@@ -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);
index 270a65b815586f82cf691382fa87882755f8f9d5..d3a33804f4e17e362b5bd05d173819f260c119ba 100644 (file)
@@ -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);