]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
we didn't sync mbox again after rewriting which left us broken mail offsets.
authorTimo Sirainen <tss@iki.fi>
Tue, 4 Nov 2003 22:26:16 +0000 (00:26 +0200)
committerTimo Sirainen <tss@iki.fi>
Tue, 4 Nov 2003 22:26:16 +0000 (00:26 +0200)
--HG--
branch : HEAD

src/lib-index/mail-index.h
src/lib-index/mbox/mbox-rewrite.c
src/lib-index/mbox/mbox-sync-full.c

index aa7809a3d4a9959754fb1693eb5ff2f2ec0c880f..699a190542c2149a0db4bc3ac0eaa4d111a84eec 100644 (file)
@@ -339,6 +339,7 @@ struct mail_index {
 
        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 @@ struct mail_index {
        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_. */
index 089cbc536fd3b071555bfe1c444888c57d07b7b6..9d66141928a2a01b68fe6c8751a64790845cb19b 100644 (file)
@@ -610,6 +610,9 @@ int mbox_index_rewrite(struct mail_index *index)
                return TRUE;
        }
 
+       /* kludgy .. but we need to force resyncing */
+       index->mbox_rewritten = TRUE;
+
        tmp_fd = -1; input = NULL;
        failed = TRUE; rewrite = FALSE;
        do {
index 1d447c677cfd2c78eab10c6a85da60a56e2b4948..c290d58338f5ea5a26b3870f42f2f1b664589962 100644 (file)
@@ -329,6 +329,13 @@ int mbox_sync_full(struct mail_index *index)
                        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);
        }