]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: When deleting a mailbox, unselect the current one just in case they're the...
authorTimo Sirainen <tss@iki.fi>
Thu, 6 Jun 2013 05:57:13 +0000 (08:57 +0300)
committerTimo Sirainen <tss@iki.fi>
Thu, 6 Jun 2013 05:57:13 +0000 (08:57 +0300)
src/lib-storage/index/imapc/imapc-list.c

index abf30c6d2c10e15821e22562222bd855fa18d0f1..e04fa991ab0625c9136c8103dbdda87de03e43c1 100644 (file)
@@ -682,9 +682,20 @@ imapc_list_delete_mailbox(struct mailbox_list *_list, const char *name)
 {
        struct imapc_mailbox_list *list = (struct imapc_mailbox_list *)_list;
        struct mailbox_list *fs_list = imapc_list_get_fs(list);
+       enum imapc_capability capa;
        struct imapc_command *cmd;
        struct imapc_simple_context ctx;
 
+       capa = imapc_client_get_capabilities(list->storage->client);
+
+       cmd = imapc_list_simple_context_init(&ctx, list);
+       imapc_command_set_flags(cmd, IMAPC_COMMAND_FLAG_SELECT);
+       if ((capa & IMAPC_CAPABILITY_UNSELECT) != 0)
+               imapc_command_sendf(cmd, "UNSELECT");
+       else
+               imapc_command_sendf(cmd, "SELECT \"~~~\"");
+       imapc_simple_run(&ctx);
+
        cmd = imapc_list_simple_context_init(&ctx, list);
        imapc_command_sendf(cmd, "DELETE %s", name);
        imapc_simple_run(&ctx);