[dovecot-cvs] dovecot/src/lib-storage/index/maildir maildir-sync.c,
1.13, 1.14 maildir-uidlist.c, 1.15, 1.16 maildir-uidlist.h, 1.5, 1.6
cras at procontrol.fi
cras at procontrol.fi
Mon May 10 02:52:15 EEST 2004
Update of /home/cvs/dovecot/src/lib-storage/index/maildir
In directory talvi:/tmp/cvs-serv29899/lib-storage/index/maildir
Modified Files:
maildir-sync.c maildir-uidlist.c maildir-uidlist.h
Log Message:
syncing fixes
Index: maildir-sync.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/maildir/maildir-sync.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- maildir-sync.c 9 May 2004 23:06:27 -0000 1.13
+++ maildir-sync.c 9 May 2004 23:52:13 -0000 1.14
@@ -559,7 +559,8 @@
is updated? shouldn't really happen.. */
mail_storage_set_critical(ibox->box.storage,
"Maildir sync: UID < next_uid "
- "(%u < %u)", uid, hdr->next_uid);
+ "(%u < %u, file = %s)",
+ uid, hdr->next_uid, filename);
mail_index_mark_corrupted(ibox->index);
ret = -1;
break;
@@ -678,9 +679,10 @@
}
/* finish uidlist syncing, but keep it still locked */
- maildir_uidlist_sync_finish(ctx->uidlist_sync_ctx);
- if (maildir_sync_index(ctx) < 0)
- return -1;
+ if (maildir_uidlist_sync_finish(ctx->uidlist_sync_ctx)) {
+ if (maildir_sync_index(ctx) < 0)
+ return -1;
+ }
ret = maildir_uidlist_sync_deinit(ctx->uidlist_sync_ctx);
ctx->uidlist_sync_ctx = NULL;
Index: maildir-uidlist.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- maildir-uidlist.c 9 May 2004 23:32:44 -0000 1.15
+++ maildir-uidlist.c 9 May 2004 23:52:13 -0000 1.16
@@ -215,7 +215,7 @@
rec = p_new(uidlist->record_pool, struct maildir_uidlist_rec, 1);
rec->uid = uid;
- rec->flags = flags;
+ rec->flags = flags | MAILDIR_UIDLIST_REC_FLAG_NONSYNCED;
rec->filename = p_strdup(uidlist->record_pool, line);
hash_insert(uidlist->files, rec->filename, rec);
buffer_append(uidlist->record_buf, &rec, sizeof(rec));
@@ -767,7 +767,7 @@
}
}
-void maildir_uidlist_sync_finish(struct maildir_uidlist_sync_ctx *ctx)
+int maildir_uidlist_sync_finish(struct maildir_uidlist_sync_ctx *ctx)
{
if (!ctx->partial) {
if (!ctx->failed && !ctx->locked)
@@ -777,9 +777,9 @@
maildir_uidlist_assign_uids(ctx->uidlist,
ctx->first_new_pos);
}
- maildir_uidlist_mark_all(ctx->uidlist, FALSE);
}
ctx->finished = TRUE;
+ return !ctx->locked;
}
int maildir_uidlist_sync_deinit(struct maildir_uidlist_sync_ctx *ctx)
@@ -792,6 +792,9 @@
if (ctx->new_files_count != 0 && !ctx->failed && !ctx->locked)
ret = maildir_uidlist_rewrite(ctx->uidlist);
+ if (ctx->partial)
+ maildir_uidlist_mark_all(ctx->uidlist, FALSE);
+
if (UIDLIST_IS_LOCKED(ctx->uidlist))
maildir_uidlist_unlock(ctx->uidlist);
Index: maildir-uidlist.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/maildir/maildir-uidlist.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- maildir-uidlist.h 9 May 2004 23:06:27 -0000 1.5
+++ maildir-uidlist.h 9 May 2004 23:52:13 -0000 1.6
@@ -37,7 +37,8 @@
int maildir_uidlist_sync_next(struct maildir_uidlist_sync_ctx *ctx,
const char *filename,
enum maildir_uidlist_rec_flag flags);
-void maildir_uidlist_sync_finish(struct maildir_uidlist_sync_ctx *ctx);
+/* Returns 1 = ok, 0 = uidlist is locked, don't try syncing any further */
+int maildir_uidlist_sync_finish(struct maildir_uidlist_sync_ctx *ctx);
int maildir_uidlist_sync_deinit(struct maildir_uidlist_sync_ctx *ctx);
/* List all maildir files. */
More information about the dovecot-cvs
mailing list