changeset 5160:2141e1f58c04 HEAD

Fixed some wrong "uid-last unexpectedly lost" errors.
author Timo Sirainen <tss@iki.fi>
date Fri, 16 Feb 2007 21:01:35 +0200
parents 627a085dac39
children e0ec43583be5
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(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-sync-private.h	Fri Feb 16 20:43:36 2007 +0200
+++ b/src/lib-storage/index/mbox/mbox-sync-private.h	Fri Feb 16 21:01:35 2007 +0200
@@ -81,7 +81,7 @@
 	uoff_t content_length;
 
 	size_t hdr_pos[MBOX_HDR_COUNT];
-	uint32_t parsed_uid;
+	uint32_t parsed_uid, last_uid_updated_value;
 	unsigned int last_uid_value_start_pos;
 
 	unsigned int have_eoh:1;
--- a/src/lib-storage/index/mbox/mbox-sync-rewrite.c	Fri Feb 16 20:43:36 2007 +0200
+++ b/src/lib-storage/index/mbox/mbox-sync-rewrite.c	Fri Feb 16 21:01:35 2007 +0200
@@ -231,7 +231,7 @@
 	if (ctx->imapbase_updated) {
 		/* update so a) we don't try to update it later unneededly,
 		   b) if we do actually update it, we see the correct value */
-		ctx->sync_ctx->base_uid_last = ctx->sync_ctx->next_uid - 1;
+		ctx->sync_ctx->base_uid_last = ctx->last_uid_updated_value;
 	}
 }
 
--- a/src/lib-storage/index/mbox/mbox-sync-update.c	Fri Feb 16 20:43:36 2007 +0200
+++ b/src/lib-storage/index/mbox/mbox-sync-update.c	Fri Feb 16 21:01:35 2007 +0200
@@ -201,10 +201,11 @@
 		str_printfa(ctx->header, "%u ",
 			    ctx->sync_ctx->base_uid_validity);
 
+		ctx->last_uid_updated_value = ctx->sync_ctx->next_uid-1;
 		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);
+		str_printfa(ctx->header, "%010u", ctx->last_uid_updated_value);
 
 		keywords_append_all(ctx, ctx->header);
 		str_append_c(ctx->header, '\n');
@@ -351,9 +352,10 @@
 	str = t_str_new(200);
 	str_printfa(str, "%u ", sync_ctx->base_uid_validity);
 
+	ctx->last_uid_updated_value = sync_ctx->next_uid-1;
 	ctx->last_uid_value_start_pos = str_len(str);
 	ctx->imapbase_updated = TRUE;
-	str_printfa(str, "%010u", sync_ctx->next_uid - 1);
+	str_printfa(str, "%010u", ctx->last_uid_updated_value);
 
 	keywords_append_all(ctx, str);
 	str_append_c(str, '\n');