[dovecot-cvs] dovecot/src/lib-storage/index/mbox mbox-sync-parse.c, 1.6, 1.7 mbox-sync.c, 1.9, 1.10

cras at procontrol.fi cras at procontrol.fi
Mon May 24 06:03:05 EEST 2004


Update of /home/cvs/dovecot/src/lib-storage/index/mbox
In directory talvi:/tmp/cvs-serv28895/lib-storage/index/mbox

Modified Files:
	mbox-sync-parse.c mbox-sync.c 
Log Message:
uidvalidity/uidnext fixes



Index: mbox-sync-parse.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- a/mbox-sync-parse.c	23 May 2004 01:58:32 -0000	1.6
+++ b/mbox-sync-parse.c	24 May 2004 03:03:03 -0000	1.7
@@ -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;
 }
 

Index: mbox-sync.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- a/mbox-sync.c	24 May 2004 01:50:17 -0000	1.9
+++ b/mbox-sync.c	24 May 2004 03:03:03 -0000	1.10
@@ -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;
 



More information about the dovecot-cvs mailing list