From: Timo Sirainen Date: Mon, 16 Sep 2019 07:51:03 +0000 (+0300) Subject: lib-storage: Include mailbox name and UID when logging about flag vs GUID mismatches X-Git-Tag: 2.3.9~144 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b864af20370172414c7916e11732253be564f055;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Include mailbox name and UID when logging about flag vs GUID mismatches --- 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); }