]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: dbox - Allow creating existing folder when rebuilding list index
authorAki Tuomi <aki.tuomi@open-xchange.com>
Mon, 9 Aug 2021 12:47:28 +0000 (15:47 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Tue, 7 Sep 2021 08:38:03 +0000 (08:38 +0000)
src/lib-storage/index/dbox-common/dbox-storage.c
src/lib-storage/index/index-storage.c

index a79f899322d96ef6d13d4de1df0f5141585f635a..5cac0d65eaa0958a9494751727a6bfb574ae3cbc 100644 (file)
@@ -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;
index 757284661c8abd81e8f55924a4b86f7c0caca26a..caf34401f8a79975ba4064b2cf041a79de3ea752 100644 (file)
@@ -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) {