From b864af20370172414c7916e11732253be564f055 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 16 Sep 2019 10:51:03 +0300 Subject: [PATCH] lib-storage: Include mailbox name and UID when logging about flag vs GUID mismatches --- src/lib-storage/list/mailbox-list-index.c | 43 ++++++++++++----------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/src/lib-storage/list/mailbox-list-index.c b/src/lib-storage/list/mailbox-list-index.c index 3f3b4bd0a8..092c0f57a4 100644 --- a/src/lib-storage/list/mailbox-list-index.c +++ b/src/lib-storage/list/mailbox-list-index.c @@ -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); } -- 2.47.3