]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dbox: Reset cache files when rebuilding indexes.
authorTimo Sirainen <tss@iki.fi>
Thu, 12 Aug 2010 15:58:45 +0000 (16:58 +0100)
committerTimo Sirainen <tss@iki.fi>
Thu, 12 Aug 2010 15:58:45 +0000 (16:58 +0100)
This is especially important if there are broken cached GUIDs for messages,
which will cause GUID mismatches when trying to expunge messages.

src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c

index 161f5c924a7f8f49f46576025b4f7ce65c10a573..68c2efe0e3a571c0c2c57a7ff3045fc9200405f1 100644 (file)
@@ -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 @@ rebuild_mailbox(struct mdbox_storage_rebuild_context *ctx,
                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);
index 4a02da98886d8419cce196ea0e56bf16cbe9c630..b2f2e86f1355c7ec60981af50c77c4e91f88581b 100644 (file)
@@ -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 @@ int sdbox_sync_index_rebuild(struct sdbox_mailbox *mbox, bool force)
                }
        }
 
+       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);