From: Timo Sirainen Date: Thu, 18 May 2017 18:10:33 +0000 (+0300) Subject: imapc: Make sure a valid UIDVALIDITY is returned by SELECT X-Git-Tag: 2.3.0.rc1~1601 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7efe57b10e55b29d3e618fa8194c01a9093f0d07;p=thirdparty%2Fdovecot%2Fcore.git imapc: Make sure a valid UIDVALIDITY is returned by SELECT Fixes errors such as: Error: Synchronization corrupted index header (in-memory index): uidvalidity=0, but next_uid=9 --- diff --git a/src/lib-storage/index/imapc/imapc-mailbox.c b/src/lib-storage/index/imapc/imapc-mailbox.c index 2100ab0f54..453ef70a9e 100644 --- a/src/lib-storage/index/imapc/imapc-mailbox.c +++ b/src/lib-storage/index/imapc/imapc-mailbox.c @@ -584,7 +584,8 @@ imapc_resp_text_uidvalidity(const struct imapc_untagged_reply *reply, uint32_t uid_validity; if (mbox == NULL || - str_to_uint32(reply->resp_text_value, &uid_validity) < 0) + str_to_uint32(reply->resp_text_value, &uid_validity) < 0 || + uid_validity == 0) return; if (mbox->sync_uid_validity != uid_validity) { diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 19e1f71317..a383e22d77 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -545,6 +545,8 @@ imapc_mailbox_verify_select(struct imapc_mailbox *mbox, const char **error_r) { if (!mbox->exists_received) *error_r = "EXISTS not received"; + else if (mbox->sync_uid_validity == 0) + *error_r = "UIDVALIDITY not received"; else return TRUE; return FALSE;