Mercurial > dovecot > core-2.2
changeset 21136:0346bbd0fdc1
lib-storage: Preserve box-name header when rebuilding index.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Wed, 16 Nov 2016 03:01:22 +0200 |
parents | c3e4cc4b6bdf |
children | 6bdcc7190a55 |
files | src/lib-storage/index/index-rebuild.c |
diffstat | 1 files changed, 20 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/index-rebuild.c Wed Nov 16 01:44:58 2016 +0200 +++ b/src/lib-storage/index/index-rebuild.c Wed Nov 16 03:01:22 2016 +0200 @@ -144,6 +144,25 @@ 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 @@ 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);