From: Aki Tuomi Date: Mon, 9 Aug 2021 12:47:28 +0000 (+0300) Subject: lib-storage: dbox - Allow creating existing folder when rebuilding list index X-Git-Tag: 2.3.17~144 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=451883dbb8cb8d3ce141824ed878aadb8687e592;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: dbox - Allow creating existing folder when rebuilding list index --- diff --git a/src/lib-storage/index/dbox-common/dbox-storage.c b/src/lib-storage/index/dbox-common/dbox-storage.c index a79f899322..5cac0d65ea 100644 --- a/src/lib-storage/index/dbox-common/dbox-storage.c +++ b/src/lib-storage/index/dbox-common/dbox-storage.c @@ -324,8 +324,8 @@ int dbox_mailbox_create(struct mailbox *box, return ret; if (mailbox_open(box) < 0) return -1; - - if (mail_index_get_header(box->view)->uid_validity != 0) { + if (mail_index_get_header(box->view)->uid_validity != 0 && + !box->storage->rebuilding_list_index) { mail_storage_set_error(box->storage, MAIL_ERROR_EXISTS, "Mailbox already exists"); return -1; diff --git a/src/lib-storage/index/index-storage.c b/src/lib-storage/index/index-storage.c index 757284661c..caf34401f8 100644 --- a/src/lib-storage/index/index-storage.c +++ b/src/lib-storage/index/index-storage.c @@ -689,10 +689,12 @@ int index_storage_mailbox_create(struct mailbox *box, bool directory) return -1; if (existence != MAILBOX_EXISTENCE_SELECT) return 1; + } else if (!box->storage->rebuilding_list_index) { + /* ignore existing location if we are recovering list index */ + mail_storage_set_error(box->storage, MAIL_ERROR_EXISTS, + "Mailbox already exists"); + return -1; } - mail_storage_set_error(box->storage, MAIL_ERROR_EXISTS, - "Mailbox already exists"); - return -1; } if (directory) {