Mercurial > dovecot > core-2.2
changeset 22287:ff11f4d5dbbc
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.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Tue, 27 Jun 2017 16:37:16 +0300 |
parents | 25366e8388d9 |
children | 7adf8266c54b |
files | src/lib-storage/list/mailbox-list-fs.c src/lib-storage/list/mailbox-list-maildir.c |
diffstat | 2 files changed, 4 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/list/mailbox-list-fs.c Tue Jun 27 16:36:56 2017 +0300 +++ b/src/lib-storage/list/mailbox-list-fs.c Tue Jun 27 16:37:16 2017 +0300 @@ -265,9 +265,8 @@ 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,
--- a/src/lib-storage/list/mailbox-list-maildir.c Tue Jun 27 16:36:56 2017 +0300 +++ b/src/lib-storage/list/mailbox-list-maildir.c Tue Jun 27 16:37:16 2017 +0300 @@ -250,9 +250,8 @@ 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)