Mercurial > dovecot > original-hg > dovecot-1.2
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);