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;