changeset 1860:8da9b7748bd4 HEAD

we didn't sync mbox again after rewriting which left us broken mail offsets.
author Timo Sirainen <tss@iki.fi>
date Wed, 05 Nov 2003 00:26:16 +0200
parents 8636c61b3b5a
children e42d97a85653
files src/lib-index/mail-index.h src/lib-index/mbox/mbox-rewrite.c src/lib-index/mbox/mbox-sync-full.c
diffstat 3 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-index.h	Tue Nov 04 22:40:58 2003 +0200
+++ b/src/lib-index/mail-index.h	Wed Nov 05 00:26:16 2003 +0200
@@ -339,6 +339,7 @@
 
 	unsigned int anon_mmap:1;
 	unsigned int mmap_invalidate:1;
+	unsigned int mbox_rewritten:1;
 	unsigned int opened:1;
 	unsigned int rebuilding:1;
 	unsigned int mail_read_mmaped:1;
@@ -368,7 +369,7 @@
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-	0
+	0, 0
 #endif
 
 /* defaults - same as above but prefixed with mail_index_. */
--- a/src/lib-index/mbox/mbox-rewrite.c	Tue Nov 04 22:40:58 2003 +0200
+++ b/src/lib-index/mbox/mbox-rewrite.c	Wed Nov 05 00:26:16 2003 +0200
@@ -610,6 +610,9 @@
 		return TRUE;
 	}
 
+	/* kludgy .. but we need to force resyncing */
+	index->mbox_rewritten = TRUE;
+
 	tmp_fd = -1; input = NULL;
 	failed = TRUE; rewrite = FALSE;
 	do {
--- a/src/lib-index/mbox/mbox-sync-full.c	Tue Nov 04 22:40:58 2003 +0200
+++ b/src/lib-index/mbox/mbox-sync-full.c	Wed Nov 05 00:26:16 2003 +0200
@@ -329,6 +329,13 @@
 			failed = !mbox_sync_from_stream(index, input);
 		}
 
+		if (index->mbox_rewritten) {
+			/* rewritten, sync again */
+                        index->mbox_rewritten = FALSE;
+			i_stream_seek(input, 0);
+			failed = !mbox_sync_from_stream(index, input);
+		}
+
 		i_stream_unref(input);
 	}