From: Timo Sirainen Date: Wed, 16 Nov 2016 01:01:22 +0000 (+0200) Subject: lib-storage: Preserve box-name header when rebuilding index. X-Git-Tag: 2.2.27~132 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c4057d78f5bb8819b0fca730bcbd86653191873b;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Preserve box-name header when rebuilding index. --- diff --git a/src/lib-storage/index/index-rebuild.c b/src/lib-storage/index/index-rebuild.c index 10d1e995c9..be093a4808 100644 --- a/src/lib-storage/index/index-rebuild.c +++ b/src/lib-storage/index/index-rebuild.c @@ -144,6 +144,25 @@ index_rebuild_header(struct index_rebuild_context *ctx, mail_index_view_close(&trans_view); } +static void +index_rebuild_box_name_header(struct index_rebuild_context *ctx) +{ + const void *name_hdr; + size_t name_hdr_size; + + mail_index_get_header_ext(ctx->view, ctx->box->box_name_hdr_ext_id, + &name_hdr, &name_hdr_size); + if (name_hdr_size == 0 && ctx->backup_view != NULL) { + mail_index_get_header_ext(ctx->backup_view, + ctx->box->box_name_hdr_ext_id, + &name_hdr, &name_hdr_size); + } + if (name_hdr_size == 0) + return; + mail_index_update_header_ext(ctx->trans, ctx->box->box_name_hdr_ext_id, + 0, name_hdr, name_hdr_size); +} + struct index_rebuild_context * index_index_rebuild_init(struct mailbox *box, struct mail_index_view *view, struct mail_index_transaction *trans) @@ -200,6 +219,7 @@ void index_index_rebuild_deinit(struct index_rebuild_context **_ctx, mail_cache_compress_unlock(&lock); } index_rebuild_header(ctx, cb); + index_rebuild_box_name_header(ctx); if (ctx->backup_index != NULL) { mail_index_view_close(&ctx->backup_view); mail_index_close(ctx->backup_index);