From: Timo Sirainen Date: Tue, 27 Jun 2017 13:37:16 +0000 (+0300) Subject: lib-storage: Use mailbox_list_delete_finish_ret() for fs & maildir++ layout X-Git-Tag: 2.2.32.rc1~145 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e547d6cf2f288c697c49f01d82e16745cf51813d;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Use mailbox_list_delete_finish_ret() for fs & maildir++ layout Fixes a problem where e.g. index directory existed but mail root didn't, and the mailbox couldn't be fully deleted. This was especially a problem with ITERINDEX enabled. --- diff --git a/src/lib-storage/list/mailbox-list-fs.c b/src/lib-storage/list/mailbox-list-fs.c index 1dd5a34f70..6ab2b052a3 100644 --- a/src/lib-storage/list/mailbox-list-fs.c +++ b/src/lib-storage/list/mailbox-list-fs.c @@ -265,9 +265,8 @@ static int fs_list_delete_mailbox(struct mailbox_list *list, const char *name) ret = fs_list_delete_maildir(list, name); } - if (ret == 0 || (list->props & MAILBOX_LIST_PROP_AUTOCREATE_DIRS) != 0) - mailbox_list_delete_finish(list, name); - return ret; + i_assert(ret <= 0); + return mailbox_list_delete_finish_ret(list, name, ret == 0); } static int fs_list_rmdir(struct mailbox_list *list, const char *name, diff --git a/src/lib-storage/list/mailbox-list-maildir.c b/src/lib-storage/list/mailbox-list-maildir.c index d61404ece9..589e63cc67 100644 --- a/src/lib-storage/list/mailbox-list-maildir.c +++ b/src/lib-storage/list/mailbox-list-maildir.c @@ -250,9 +250,8 @@ maildir_list_delete_mailbox(struct mailbox_list *list, const char *name) ret = maildir_list_delete_maildir(list, name); } - if (ret == 0 || (list->props & MAILBOX_LIST_PROP_AUTOCREATE_DIRS) != 0) - mailbox_list_delete_finish(list, name); - return ret; + i_assert(ret <= 0); + return mailbox_list_delete_finish_ret(list, name, ret == 0); } static int maildir_list_delete_dir(struct mailbox_list *list, const char *name)