changeset 2054:02e066d4df9a HEAD

uidvalidity/uidnext fixes
author Timo Sirainen <tss@iki.fi>
date Mon, 24 May 2004 06:03:03 +0300
parents 66f5d28f9b27
children ef9a46ea2622
files src/lib-storage/index/mbox/mbox-sync-parse.c src/lib-storage/index/mbox/mbox-sync.c
diffstat 2 files changed, 22 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-sync-parse.c	Mon May 24 05:47:23 2004 +0300
+++ b/src/lib-storage/index/mbox/mbox-sync-parse.c	Mon May 24 06:03:03 2004 +0300
@@ -102,11 +102,6 @@
 		return FALSE;
 	}
 
-	if (pos == hdr->full_value_len)
-		return TRUE;
-
-	// FIXME: save keywords
-
 	if (ctx->sync_ctx->base_uid_validity == 0) {
 		ctx->sync_ctx->base_uid_validity = uid_validity;
 		ctx->sync_ctx->base_uid_last = uid_last;
@@ -115,6 +110,12 @@
 
 	ctx->hdr_pos[MBOX_HDR_X_IMAPBASE] = str_len(ctx->header);
 	ctx->seen_imapbase = TRUE;
+
+	if (pos == hdr->full_value_len)
+		return TRUE;
+
+	// FIXME: save keywords
+
 	return TRUE;
 }
 
--- a/src/lib-storage/index/mbox/mbox-sync.c	Mon May 24 05:47:23 2004 +0300
+++ b/src/lib-storage/index/mbox/mbox-sync.c	Mon May 24 06:03:03 2004 +0300
@@ -225,7 +225,9 @@
 				ret = -1;
 				break;
 			}
-			sync_ctx.base_uid_validity = hdr->uid_validity;
+			sync_ctx.base_uid_validity =
+				hdr->uid_validity == 0 ? (uint32_t)ioloop_time :
+				hdr->uid_validity;
 		}
 
 		if ((mail_ctx.need_rewrite ||
@@ -392,6 +394,19 @@
 
 	if (mail_index_get_header(sync_view, &hdr) < 0)
 		ret = -1;
+
+	if (sync_ctx.base_uid_validity != hdr->uid_validity) {
+		mail_index_update_header(t,
+			offsetof(struct mail_index_header, uid_validity),
+			&sync_ctx.base_uid_validity,
+			sizeof(sync_ctx.base_uid_validity));
+	}
+	if (sync_ctx.next_uid != hdr->next_uid) {
+		mail_index_update_header(t,
+			offsetof(struct mail_index_header, next_uid),
+			&sync_ctx.next_uid, sizeof(sync_ctx.next_uid));
+	}
+
 	if ((uint32_t)st.st_mtime != hdr->sync_stamp) {
 		uint32_t sync_stamp = st.st_mtime;