[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