dovecot-2.0: dbox: Reset cache files when rebuilding indexes.

dovecot at dovecot.org dovecot at dovecot.org
Thu Aug 12 18:59:04 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/ab8ca4ded5ac
changeset: 11989:ab8ca4ded5ac
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Aug 12 16:58:45 2010 +0100
description:
dbox: Reset cache files when rebuilding indexes.
This is especially important if there are broken cached GUIDs for messages,
which will cause GUID mismatches when trying to expunge messages.

diffstat:

 src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c |  4 ++++
 src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c   |  3 +++
 2 files changed, 7 insertions(+), 0 deletions(-)

diffs (41 lines):

diff -r 117053f20528 -r ab8ca4ded5ac src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
--- a/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c	Thu Aug 12 16:53:04 2010 +0100
+++ b/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c	Thu Aug 12 16:58:45 2010 +0100
@@ -6,6 +6,7 @@
 #include "istream.h"
 #include "hash.h"
 #include "str.h"
+#include "mail-cache.h"
 #include "dbox-sync-rebuild.h"
 #include "mail-namespace.h"
 #include "mdbox-storage.h"
@@ -521,6 +522,9 @@
 		return -1;
 	}
 
+	/* reset cache, just in case it contains invalid data */
+	mail_cache_reset(box->cache);
+
 	rebuild_ctx = dbox_sync_index_rebuild_init(&mbox->box, view, trans);
 	mdbox_header_update(rebuild_ctx, mbox);
 	rebuild_mailbox_multi(ctx, rebuild_ctx, mbox, view, trans);
diff -r 117053f20528 -r ab8ca4ded5ac src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c
--- a/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c	Thu Aug 12 16:53:04 2010 +0100
+++ b/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c	Thu Aug 12 16:58:45 2010 +0100
@@ -3,6 +3,7 @@
 #include "lib.h"
 #include "array.h"
 #include "dbox-sync-rebuild.h"
+#include "mail-cache.h"
 #include "sdbox-storage.h"
 #include "sdbox-file.h"
 #include "sdbox-sync.h"
@@ -176,6 +177,8 @@
 		}
 	}
 
+	mail_cache_reset(mbox->box.cache);
+
 	view = mail_index_view_open(mbox->box.index);
 	trans = mail_index_transaction_begin(view,
 					MAIL_INDEX_TRANSACTION_FLAG_EXTERNAL);


More information about the dovecot-cvs mailing list