From: Timo Sirainen Date: Sat, 6 Mar 2010 12:28:32 +0000 (+0200) Subject: mdbox index rebuild: GUID wasn't kept for messages. X-Git-Tag: 2.0.beta4~116 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6703576ebded5587bef91ed4341c98cdb2b6810c;p=thirdparty%2Fdovecot%2Fcore.git mdbox index rebuild: GUID wasn't kept for messages. --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c b/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c index 2b2ac9d59e..34837a5798 100644 --- a/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c +++ b/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c @@ -171,7 +171,7 @@ static int rebuild_file_mails(struct mdbox_storage_rebuild_context *ctx, prev_offset = offset; guid = dbox_file_metadata_get(file, DBOX_METADATA_GUID); - if (guid == NULL) { + if (guid == NULL || *guid == '\0') { dbox_file_set_corrupted(file, "Message is missing GUID"); ret = 0; @@ -183,6 +183,7 @@ static int rebuild_file_mails(struct mdbox_storage_rebuild_context *ctx, rec->offset = offset; rec->size = file->input->v_offset - offset; mail_generate_guid_128_hash(guid, rec->guid_128); + i_assert(!mail_guid_128_is_empty(rec->guid_128)); array_append(&ctx->msgs, &rec, 1); if (hash_table_lookup(ctx->guid_hash, rec->guid_128) != NULL) { @@ -389,6 +390,8 @@ rebuild_mailbox_multi(struct mdbox_storage_rebuild_context *ctx, new_dbox_rec.map_uid = rec->map_uid; mail_index_update_ext(trans, new_seq, mbox->ext_id, &new_dbox_rec, NULL); + mail_index_update_ext(trans, new_seq, mbox->guid_ext_id, + rec->guid_128, NULL); } T_END; } }