From: Timo Sirainen Date: Tue, 15 Nov 2016 23:01:58 +0000 (+0200) Subject: lib-storage: Improve mailbox list index corruption errors X-Git-Tag: 2.3.0.rc1~2610 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=48baf3ac10f069681c8558ea25cca826dca069a3;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Improve mailbox list index corruption errors --- diff --git a/src/lib-storage/list/mailbox-list-index.c b/src/lib-storage/list/mailbox-list-index.c index 47a0a1f56c..f36e9ae7a2 100644 --- a/src/lib-storage/list/mailbox-list-index.c +++ b/src/lib-storage/list/mailbox-list-index.c @@ -292,7 +292,8 @@ static int mailbox_list_index_parse_records(struct mailbox_list_index *ilist, node->name = hash_table_lookup(ilist->mailbox_names, POINTER_CAST(irec->name_id)); if (node->name == NULL) { - *error_r = "name_id not in index header"; + *error_r = t_strdup_printf( + "name_id=%u not in index header", irec->name_id); if (ilist->has_backing_store) break; /* generate a new name and use it */ @@ -325,7 +326,9 @@ static int mailbox_list_index_parse_records(struct mailbox_list_index *ilist, node->parent->children = node; continue; } - *error_r = "parent_uid points to nonexistent record"; + *error_r = t_strdup_printf( + "parent_uid=%u points to nonexistent record", + irec->parent_uid); if (ilist->has_backing_store) break; /* just place it under the root */ @@ -333,10 +336,13 @@ static int mailbox_list_index_parse_records(struct mailbox_list_index *ilist, if (hash_table_lookup(duplicate_hash, node) == NULL) hash_table_insert(duplicate_hash, node, node); else { + const char *old_name = node->name; guid_128_t guid; if (ilist->has_backing_store) { - *error_r = "Duplicate mailbox in index"; + *error_r = t_strdup_printf( + "Duplicate mailbox '%s' in index", + node->name); break; } @@ -347,8 +353,8 @@ static int mailbox_list_index_parse_records(struct mailbox_list_index *ilist, "%s-duplicate-%s", node->name, guid_128_to_string(guid)); *error_r = t_strdup_printf( - "Duplicate mailbox in index, renaming to %s", - node->name); + "Duplicate mailbox '%s' in index, renaming to %s", + old_name, node->name); } node->next = ilist->mailbox_tree; ilist->mailbox_tree = node;