From 7efe57b10e55b29d3e618fa8194c01a9093f0d07 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 18 May 2017 21:10:33 +0300 Subject: [PATCH] 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 --- src/lib-storage/index/imapc/imapc-mailbox.c | 3 ++- src/lib-storage/index/imapc/imapc-storage.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) 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;