Mercurial > dovecot > core-2.2
changeset 2054:02e066d4df9a HEAD
uidvalidity/uidnext fixes
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 24 May 2004 06:03:03 +0300 |
parents | 66f5d28f9b27 |
children | ef9a46ea2622 |
files | src/lib-storage/index/mbox/mbox-sync-parse.c src/lib-storage/index/mbox/mbox-sync.c |
diffstat | 2 files changed, 22 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-sync-parse.c Mon May 24 05:47:23 2004 +0300 +++ b/src/lib-storage/index/mbox/mbox-sync-parse.c Mon May 24 06:03:03 2004 +0300 @@ -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; }
--- a/src/lib-storage/index/mbox/mbox-sync.c Mon May 24 05:47:23 2004 +0300 +++ b/src/lib-storage/index/mbox/mbox-sync.c Mon May 24 06:03:03 2004 +0300 @@ -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;