[dovecot-cvs] dovecot/src/lib-storage/index/mbox mbox-sync-parse.c, 1.4, 1.5 mbox-sync-update.c, 1.4, 1.5 mbox-sync.c, 1.6, 1.7

cras at procontrol.fi cras at procontrol.fi
Sat May 22 03:48:47 EEST 2004


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

Modified Files:
	mbox-sync-parse.c mbox-sync-update.c mbox-sync.c 
Log Message:
Transaction log contains only UIDs now, no more sequences which just mess up
everything.



Index: mbox-sync-parse.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync-parse.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- a/mbox-sync-parse.c	9 May 2004 21:06:48 -0000	1.4
+++ b/mbox-sync-parse.c	22 May 2004 00:48:45 -0000	1.5
@@ -299,6 +299,7 @@
 	if (ctx->mail.uid == 0) {
 		/* missing X-UID */
 		ctx->need_rewrite = TRUE;
+		ctx->mail.uid = ctx->sync_ctx->next_uid++;
 	}
 
 	ctx->body_offset = input->v_offset;

Index: mbox-sync-update.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync-update.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- a/mbox-sync-update.c	9 May 2004 21:06:48 -0000	1.4
+++ b/mbox-sync-update.c	22 May 2004 00:48:45 -0000	1.5
@@ -98,12 +98,9 @@
 	i_assert(ctx->sync_ctx->base_uid_validity != 0);
 
 	if (ctx->hdr_pos[MBOX_HDR_X_UID] == (size_t)-1) {
-		if (ctx->mail.uid == 0)
-			ctx->mail.uid = ctx->sync_ctx->next_uid++;
 		ctx->hdr_pos[MBOX_HDR_X_UID] = str_len(ctx->header);
 		str_printfa(ctx->header, "X-UID: %u\n", ctx->mail.uid);
 	}
-	i_assert(ctx->mail.uid != 0);
 
 	if (ctx->hdr_pos[MBOX_HDR_STATUS] == (size_t)-1 &&
 	    (ctx->mail.flags & STATUS_FLAGS_MASK) != 0) {

Index: mbox-sync.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/mbox/mbox-sync.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- a/mbox-sync.c	10 May 2004 21:09:15 -0000	1.6
+++ b/mbox-sync.c	22 May 2004 00:48:45 -0000	1.7
@@ -82,7 +82,7 @@
 	return 0;
 }
 
-static void mbox_sync_buffer_delete_old(buffer_t *syncs_buf, uint32_t seq)
+static void mbox_sync_buffer_delete_old(buffer_t *syncs_buf, uint32_t uid)
 {
 	struct mail_index_sync_rec *sync;
 	size_t size, src, dest;
@@ -91,7 +91,7 @@
 	size /= sizeof(*sync);
 
 	for (src = dest = 0; src < size; src++) {
-		if (sync[src].seq2 >= seq) {
+		if (sync[src].uid2 >= uid) {
 			if (src != dest)
 				sync[dest] = sync[src];
 			dest++;
@@ -199,12 +199,14 @@
 		if (input->eof)
 			break;
 
+		mbox_sync_next_mail(&sync_ctx, &mail_ctx, seq);
+
 		/* get all sync records related to this message */
 		ret = 1;
-		mbox_sync_buffer_delete_old(syncs, seq);
-		while (seq >= sync_rec.seq1 && ret > 0) {
-			if (sync_rec.seq1 != 0) {
-				i_assert(seq <= sync_rec.seq2);
+		mbox_sync_buffer_delete_old(syncs, mail_ctx.mail.uid);
+		while (mail_ctx.mail.uid >= sync_rec.uid1 && ret > 0) {
+			if (sync_rec.uid1 != 0) {
+				i_assert(mail_ctx.mail.uid <= sync_rec.uid2);
 				buffer_append(syncs, &sync_rec,
 					      sizeof(sync_rec));
 			}
@@ -215,8 +217,6 @@
 		if (ret < 0)
 			break;
 
-		mbox_sync_next_mail(&sync_ctx, &mail_ctx, seq);
-
 		if (seq == 1 && sync_ctx.base_uid_validity == 0) {
 			if (mail_index_get_header(sync_view, &hdr) < 0) {
 				ret = -1;



More information about the dovecot-cvs mailing list