From: Timo Sirainen Date: Mon, 12 Mar 2018 13:29:48 +0000 (+0200) Subject: imapc: Fix errors when handling UIDVALIDITY change X-Git-Tag: 2.3.9~2144 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2a67790b545a85d992b2d242474e639bf4978dd8;p=thirdparty%2Fdovecot%2Fcore.git 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 --- 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),