changeset 3339:5cf828dbcd32 HEAD

If uid-last isn't actually updated while rewriting first message, don't assume it is. Fixes bogus "uid-last changed" errors.
author Timo Sirainen <tss@iki.fi>
date Tue, 26 Apr 2005 17:07:31 +0300
parents e5ce49c8524a
children 9c8220dfde7c
files src/lib-storage/index/mbox/mbox-sync-private.h src/lib-storage/index/mbox/mbox-sync-rewrite.c src/lib-storage/index/mbox/mbox-sync-update.c
diffstat 3 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-sync-private.h	Tue Apr 26 14:43:30 2005 +0300
+++ b/src/lib-storage/index/mbox/mbox-sync-private.h	Tue Apr 26 17:07:31 2005 +0300
@@ -87,6 +87,7 @@
 	unsigned int dirty:1;
 	unsigned int uid_broken:1;
 	unsigned int imapbase_rewrite:1;
+	unsigned int imapbase_updated:1;
 };
 
 struct mbox_sync_context {
--- a/src/lib-storage/index/mbox/mbox-sync-rewrite.c	Tue Apr 26 14:43:30 2005 +0300
+++ b/src/lib-storage/index/mbox/mbox-sync-rewrite.c	Tue Apr 26 17:07:31 2005 +0300
@@ -288,8 +288,10 @@
 		return -1;
 	}
 
-	if (sync_ctx->dest_first_mail)
+	if (ctx->imapbase_updated) {
+		i_assert(sync_ctx->dest_first_mail);
 		mbox_sync_first_mail_written(ctx, ctx->hdr_offset + move_diff);
+	}
 
 	i_stream_sync(sync_ctx->input);
 	return 1;
--- a/src/lib-storage/index/mbox/mbox-sync-update.c	Tue Apr 26 14:43:30 2005 +0300
+++ b/src/lib-storage/index/mbox/mbox-sync-update.c	Tue Apr 26 17:07:31 2005 +0300
@@ -189,6 +189,7 @@
 
 		ctx->last_uid_value_start_pos = str_len(ctx->header) -
 			ctx->hdr_pos[MBOX_HDR_X_IMAPBASE];
+		ctx->imapbase_updated = TRUE;
 		str_printfa(ctx->header, "%010u", ctx->sync_ctx->next_uid-1);
 
 		keywords_append_all(ctx, ctx->header);
@@ -332,6 +333,7 @@
 
 	ctx->last_uid_value_start_pos =
 		str_len(str) - ctx->hdr_pos[MBOX_HDR_X_IMAPBASE];
+	ctx->imapbase_updated = TRUE;
 	str_printfa(str, "%010u", sync_ctx->next_uid - 1);
 
 	keywords_append_all(ctx, str);