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);