From: Markus Valentin Date: Fri, 14 Jan 2022 07:07:50 +0000 (+0100) Subject: lib-storage: mailbox-list: index_list_rename_mailbox() - Support NO-NOSELECT X-Git-Tag: 2.3.19~118 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1e0870724bff69d9c7aff70ef4660b94abd7a01f;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: mailbox-list: index_list_rename_mailbox() - Support NO-NOSELECT When NO-NOSELECT is configured delete parent mailboxes which are not selectable or existant when renaming child mailboxes. --- diff --git a/src/lib-storage/list/mailbox-list-index-backend.c b/src/lib-storage/list/mailbox-list-index-backend.c index fecad1db8e..6b42c01020 100644 --- a/src/lib-storage/list/mailbox-list-index-backend.c +++ b/src/lib-storage/list/mailbox-list-index-backend.c @@ -808,6 +808,7 @@ index_list_rename_mailbox(struct mailbox_list *_oldlist, const char *oldname, const void *data; bool created, expunged; uint32_t oldseq, newseq; + int ret; if (_oldlist != _newlist) { mailbox_list_set_error(_oldlist, MAIL_ERROR_NOTPOSSIBLE, @@ -881,7 +882,12 @@ index_list_rename_mailbox(struct mailbox_list *_oldlist, const char *oldname, sync_ctx->ilist->ext_id, &oldrec, NULL); mail_index_expunge(sync_ctx->trans, newseq); - return mailbox_list_index_sync_end(&sync_ctx, TRUE); + ret = mailbox_list_index_sync_end(&sync_ctx, TRUE); + + if (_oldlist->set.no_noselect && ret == 0) + (void)index_list_try_delete_nonexistent_parent(_oldlist, oldname); + + return ret; } static struct mailbox_list_iterate_context *