changeset 11989:ab8ca4ded5ac

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.
author Timo Sirainen <tss@iki.fi>
date Thu, 12 Aug 2010 16:58:45 +0100
parents 117053f20528
children 4d8ae218af73
files src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c
diffstat 2 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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);
--- 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);