]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Make sure a valid UIDVALIDITY is returned by SELECT
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 18 May 2017 18:10:33 +0000 (21:10 +0300)
committerGitLab <gitlab@git.dovecot.net>
Fri, 19 May 2017 07:13:55 +0000 (10:13 +0300)
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
src/lib-storage/index/imapc/imapc-storage.c

index 2100ab0f548b2475e6d2b267f673f3fcd0ee2b12..453ef70a9e29c16ec5df43d81f14201a78ef49b1 100644 (file)
@@ -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) {
index 19e1f71317061a07e3ad3c61705a2298629d6ee8..a383e22d77d44b7fe67a5905d1b55924725a119e 100644 (file)
@@ -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;