From: Timo Sirainen Date: Sun, 25 Mar 2018 20:15:58 +0000 (+0300) Subject: imapc: Fix local state if mailbox is empty after reconnection X-Git-Tag: 2.2.36.rc1~40 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=056929a1c64d5cb07fcc4336ef9a5aa187f849e3;p=thirdparty%2Fdovecot%2Fcore.git imapc: Fix local state if mailbox is empty after reconnection If local indexes had more than 0 mails, but after reconnection the remote IMAP server replied with "* 0 EXISTS", the mails in local index weren't expunged. This could have resulted in: Panic: file imapc-sync.c: line 328 (imapc_initial_sync_check): assertion failed: (mail_index_is_expunged(view, lseq) || seq_range_exists(&ctx->mbox->delayed_expunged_uids, luid)) --- diff --git a/src/lib-storage/index/imapc/imapc-mailbox.c b/src/lib-storage/index/imapc/imapc-mailbox.c index 57dac046a9..1e381c4aa4 100644 --- a/src/lib-storage/index/imapc/imapc-mailbox.c +++ b/src/lib-storage/index/imapc/imapc-mailbox.c @@ -220,8 +220,10 @@ imapc_mailbox_fetch_state(struct imapc_mailbox *mbox, uint32_t first_uid) struct imapc_command *cmd; if (mbox->exists_count == 0) { - /* empty mailbox - no point in fetching anything */ - mbox->state_fetched_success = TRUE; + /* empty mailbox - no point in fetching anything. + just make sure everything is expunged in local index. */ + mbox->sync_next_lseq = 1; + imapc_mailbox_fetch_state_finish(mbox); return; } if (mbox->state_fetching_uid1) {