]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: mailbox list index - detect if non-selectable mailbox has GUID
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Sun, 15 Sep 2019 17:58:14 +0000 (20:58 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 19 Sep 2019 14:57:28 +0000 (14:57 +0000)
If it has, mark it as selectable.

src/lib-storage/list/mailbox-list-index.c

index ac45a890aaf11826db4e69933aa492bfd5d68784..3f3b4bd0a84a0fd6b71f53ff8d1a43a2bd1a2602 100644 (file)
@@ -337,6 +337,15 @@ static int mailbox_list_index_parse_records(struct mailbox_list_index *ilist,
                                "setting it non-selectable";
                        node->corrupted_flags = TRUE;
                }
+               if (!ilist->has_backing_store && !guid_128_is_empty(irec->guid) &&
+                   (rec->flags & (MAILBOX_LIST_INDEX_FLAG_NONEXISTENT |
+                                  MAILBOX_LIST_INDEX_FLAG_NOSELECT)) != 0) {
+                       node->flags &= ~(MAILBOX_LIST_INDEX_FLAG_NONEXISTENT |
+                                        MAILBOX_LIST_INDEX_FLAG_NOSELECT);
+                       *error_r = "non-selectable mailbox already has GUID - "
+                               "marking it selectable";
+                       node->corrupted_flags = TRUE;
+               }
 
                node->name_id = irec->name_id;
                if (node->name_id == 0) {