Mercurial > dovecot > core-2.2
changeset 22290:f01b39a6d3b4
lib-storage: Fix mailbox delete to not delete childrens' INDEX or CONTROL dirs
If mail_location had separate INDEX and/or CONTROL set, deleting a mailbox
with children caused the childrens' index and/or control directories to be
deleted (but the mail/ALT directories weren't).
I'm not sure why the _FLAG_MAILBOX_FILES was treated as a special case
earlier. It shouldn't make a difference.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Fri, 30 Jun 2017 13:56:54 +0300 |
parents | 471c8c88c5d1 |
children | 5a81b1690625 |
files | src/lib-storage/list/mailbox-list-delete.c |
diffstat | 1 files changed, 4 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/list/mailbox-list-delete.c Tue Jun 27 15:39:12 2017 +0300 +++ b/src/lib-storage/list/mailbox-list-delete.c Fri Jun 30 13:56:54 2017 +0300 @@ -295,8 +295,10 @@ strcmp(path, mailbox_path) == 0) return 0; - if (*list->set.maildir_name == '\0' && - (list->flags & MAILBOX_LIST_FLAG_MAILBOX_FILES) == 0) { + /* Note that only ALT currently uses maildir_name in paths. + INDEX and CONTROL don't. */ + if (type != MAILBOX_LIST_PATH_TYPE_ALT_MAILBOX || + *list->set.maildir_name == '\0') { /* this directory may contain also child mailboxes' data. we don't want to delete that. */ bool rmdir_path = *list->set.maildir_name != '\0';