]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Include mailbox name and UID when logging about flag vs GUID mismatches
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 16 Sep 2019 07:51:03 +0000 (10:51 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 19 Sep 2019 14:57:28 +0000 (14:57 +0000)
src/lib-storage/list/mailbox-list-index.c

index 3f3b4bd0a84a0fd6b71f53ff8d1a43a2bd1a2602..092c0f57a4a05aff23742229dde57b6a22224e09 100644 (file)
@@ -327,26 +327,6 @@ static int mailbox_list_index_parse_records(struct mailbox_list_index *ilist,
                }
                irec = data;
 
-               if (!ilist->has_backing_store && guid_128_is_empty(irec->guid) &&
-                   (rec->flags & (MAILBOX_LIST_INDEX_FLAG_NONEXISTENT |
-                                  MAILBOX_LIST_INDEX_FLAG_NOSELECT)) == 0) {
-                       /* no backing store and mailbox has no GUID.
-                          it can't be selectable, but the flag is missing. */
-                       node->flags |= MAILBOX_LIST_INDEX_FLAG_NOSELECT;
-                       *error_r = "mailbox is missing guid - "
-                               "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) {
                        /* invalid name_id - assign a new one */
@@ -363,6 +343,29 @@ static int mailbox_list_index_parse_records(struct mailbox_list_index *ilist,
                        /* generate a new name and use it */
                        mailbox_list_index_generate_name(ilist, node, "unknown-");
                }
+
+               if (!ilist->has_backing_store && guid_128_is_empty(irec->guid) &&
+                   (rec->flags & (MAILBOX_LIST_INDEX_FLAG_NONEXISTENT |
+                                  MAILBOX_LIST_INDEX_FLAG_NOSELECT)) == 0) {
+                       /* no backing store and mailbox has no GUID.
+                          it can't be selectable, but the flag is missing. */
+                       node->flags |= MAILBOX_LIST_INDEX_FLAG_NOSELECT;
+                       *error_r = t_strdup_printf(
+                               "mailbox '%s' (uid=%u) is missing GUID - "
+                               "marking it non-selectable", node->name, node->uid);
+                       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 = t_strdup_printf(
+                               "non-selectable mailbox '%s' (uid=%u) already has GUID - "
+                               "marking it selectable", node->name, node->uid);
+                       node->corrupted_flags = TRUE;
+               }
+
                hash_table_insert(ilist->mailbox_hash,
                                  POINTER_CAST(node->uid), node);
        }