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)