From 2a67790b545a85d992b2d242474e639bf4978dd8 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 12 Mar 2018 15:29:48 +0200 Subject: [PATCH] imapc: Fix errors when handling UIDVALIDITY change This mainly happened when imapc was used with index files and the backend IMAP server recreated the mailbox. This caused errors like: Expunged message uid=1 reappeared - reconnecting --- src/lib-storage/index/imapc/imapc-mailbox.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib-storage/index/imapc/imapc-mailbox.c b/src/lib-storage/index/imapc/imapc-mailbox.c index 42bedcaf3c..b1f5cca44e 100644 --- a/src/lib-storage/index/imapc/imapc-mailbox.c +++ b/src/lib-storage/index/imapc/imapc-mailbox.c @@ -727,6 +727,12 @@ static void imapc_sync_uid_validity(struct imapc_mailbox *mbox) /* uidvalidity changed, reset the entire mailbox */ mail_index_reset(mbox->delayed_sync_trans); mbox->sync_fetch_first_uid = 1; + /* The reset needs to be committed before FETCH 1:* + results are received. */ + bool changes; + if (imapc_mailbox_commit_delayed_trans(mbox, &changes) < 0) + mail_index_mark_corrupted(mbox->box.index); + imapc_mailbox_init_delayed_trans(mbox); } mail_index_update_header(mbox->delayed_sync_trans, offsetof(struct mail_index_header, uid_validity), -- 2.47.3