From: Timo Sirainen Date: Fri, 16 Dec 2011 11:08:18 +0000 (+0200) Subject: FS layout: When deleting a mailbox, don't give an error if mailbox has children. X-Git-Tag: 2.1.rc2~33 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ca43e32c3f175d64774d88e1cdc38d48d8840be9;p=thirdparty%2Fdovecot%2Fcore.git FS layout: When deleting a mailbox, don't give an error if mailbox has children. The mailbox got successfully deleted, but it still gave an error. --- diff --git a/src/lib-storage/index/index-storage.c b/src/lib-storage/index/index-storage.c index 77000cc723..7673f6339b 100644 --- a/src/lib-storage/index/index-storage.c +++ b/src/lib-storage/index/index-storage.c @@ -511,6 +511,7 @@ int index_storage_mailbox_delete(struct mailbox *box) { struct mailbox_metadata metadata; struct mailbox_status status; + enum mail_error error; int ret_guid; if (!box->opened) { @@ -564,7 +565,14 @@ int index_storage_mailbox_delete(struct mailbox *box) MAILBOX_LOG_RECORD_DELETE_MAILBOX, metadata.guid); } - return index_storage_mailbox_delete_dir(box, TRUE); + if (index_storage_mailbox_delete_dir(box, TRUE) < 0) { + (void)mailbox_get_last_error(box, &error); + if (error != MAIL_ERROR_EXISTS) + return -1; + /* we deleted the mailbox, but couldn't delete the directory + because it has children. that's not an error. */ + } + return 0; } int index_storage_mailbox_rename(struct mailbox *src, struct mailbox *dest,