From 3fb442057c352645e918314815f8fe2a12b6ee2b Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Tue, 27 Jun 2017 16:37:16 +0300 Subject: [PATCH] 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. --- src/lib-storage/list/mailbox-list-fs.c | 5 ++--- src/lib-storage/list/mailbox-list-maildir.c | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) 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) -- 2.47.3