dovecot-2.0: dsync: Fixed flushing asserts
dovecot at dovecot.org
dovecot at dovecot.org
Sat Jul 10 20:11:58 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/d9d1272d99b7
changeset: 11775:d9d1272d99b7
user: Timo Sirainen <tss at iki.fi>
date: Sat Jul 10 18:11:55 2010 +0100
description:
dsync: Fixed flushing asserts
diffstat:
src/dsync/dsync-brain-msgs-new.c | 4 +++-
src/dsync/dsync-brain-private.h | 1 +
src/dsync/dsync-brain.c | 7 ++++++-
src/dsync/dsync-worker-local.c | 2 +-
4 files changed, 11 insertions(+), 3 deletions(-)
diffs (80 lines):
diff -r 1f9080e9a530 -r d9d1272d99b7 src/dsync/dsync-brain-msgs-new.c
--- a/src/dsync/dsync-brain-msgs-new.c Sat Jul 10 17:59:11 2010 +0100
+++ b/src/dsync/dsync-brain-msgs-new.c Sat Jul 10 18:11:55 2010 +0100
@@ -52,6 +52,7 @@
{
struct dsync_brain_msg_save_context *ctx = context;
+ i_warning("save done");
if (--ctx->iter->save_results_left == 0 && !ctx->iter->adding_msgs)
dsync_brain_msg_sync_add_new_msgs(ctx->iter);
i_free(ctx);
@@ -67,7 +68,7 @@
i_assert(ctx->iter->save_results_left > 0);
- mailbox = array_idx(&ctx->iter->sync->mailboxes, ctx->mailbox_idx);
+ mailbox = array_idx(&->iter->sync->mailboxes, ctx->mailbox_idx);
switch (result) {
case DSYNC_MSG_GET_RESULT_SUCCESS:
/* the mailbox may have changed, make sure we've the
@@ -175,6 +176,7 @@
save_ctx->msg = msg->msg;
save_ctx->mailbox_idx = dest_iter->mailbox_idx;
+ i_warning("retr %d", save_ctx->msg->uid);
dest_iter->save_results_left++;
dest_iter->adding_msgs = TRUE;
dsync_worker_msg_get(src_iter->worker, src_mailbox,
diff -r 1f9080e9a530 -r d9d1272d99b7 src/dsync/dsync-brain-private.h
--- a/src/dsync/dsync-brain-private.h Sat Jul 10 17:59:11 2010 +0100
+++ b/src/dsync/dsync-brain-private.h Sat Jul 10 18:11:55 2010 +0100
@@ -122,6 +122,7 @@
struct dsync_brain_subs_list *dest_subs_list;
struct dsync_brain_mailbox_sync *mailbox_sync;
+ struct timeout *to;
unsigned int failed:1;
unsigned int verbose:1;
diff -r 1f9080e9a530 -r d9d1272d99b7 src/dsync/dsync-brain.c
--- a/src/dsync/dsync-brain.c Sat Jul 10 17:59:11 2010 +0100
+++ b/src/dsync/dsync-brain.c Sat Jul 10 18:11:55 2010 +0100
@@ -55,6 +55,8 @@
if (brain->state != DSYNC_STATE_SYNC_END)
ret = -1;
+ if (brain->to != NULL)
+ timeout_remove(&brain->to);
if (ret < 0) {
/* make sure we unreference save input streams before workers
@@ -783,11 +785,14 @@
dsync_brain_fail(brain);
brain->state++;
- dsync_brain_sync(brain);
+ if (brain->to == NULL)
+ brain->to = timeout_add(0, dsync_brain_sync, brain);
}
void dsync_brain_sync(struct dsync_brain *brain)
{
+ if (brain->to != NULL)
+ timeout_remove(&brain->to);
switch (brain->state) {
case DSYNC_STATE_GET_MAILBOXES:
i_assert(brain->src_mailbox_list == NULL);
diff -r 1f9080e9a530 -r d9d1272d99b7 src/dsync/dsync-worker-local.c
--- a/src/dsync/dsync-worker-local.c Sat Jul 10 17:59:11 2010 +0100
+++ b/src/dsync/dsync-worker-local.c Sat Jul 10 18:11:55 2010 +0100
@@ -1562,8 +1562,8 @@
worker->save_callback = NULL;
i_stream_unref(&worker->save_input);
+ dsync_worker_try_finish(worker);
callback(worker->save_context);
- dsync_worker_try_finish(worker);
}
static void
More information about the dovecot-cvs
mailing list