Mercurial > dovecot > core-2.2
changeset 22054:412e15c438bc
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
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 18 May 2017 21:10:33 +0300 |
parents | 7ecd91f06169 |
children | 4ae88bb10a94 |
files | src/lib-storage/index/imapc/imapc-mailbox.c src/lib-storage/index/imapc/imapc-storage.c |
diffstat | 2 files changed, 4 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/imapc/imapc-mailbox.c Thu May 18 21:08:23 2017 +0300 +++ b/src/lib-storage/index/imapc/imapc-mailbox.c Thu May 18 21:10:33 2017 +0300 @@ -584,7 +584,8 @@ 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) {
--- a/src/lib-storage/index/imapc/imapc-storage.c Thu May 18 21:08:23 2017 +0300 +++ b/src/lib-storage/index/imapc/imapc-storage.c Thu May 18 21:10:33 2017 +0300 @@ -545,6 +545,8 @@ { 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;