From: Timo Sirainen Date: Tue, 20 Jul 2010 13:47:39 +0000 (+0100) Subject: dsync: Fixed potential crash with remote syncing. X-Git-Tag: 2.0.rc3~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2bc03d11a9771db3440c7a1b041da08a13f941b3;p=thirdparty%2Fdovecot%2Fcore.git dsync: Fixed potential crash with remote syncing. --- diff --git a/src/dsync/dsync-brain-msgs-new.c b/src/dsync/dsync-brain-msgs-new.c index 3ac0d1477a..a518dcddce 100644 --- a/src/dsync/dsync-brain-msgs-new.c +++ b/src/dsync/dsync-brain-msgs-new.c @@ -248,6 +248,8 @@ dsync_brain_msg_sync_finish(struct dsync_brain_msg_iter *iter) { struct dsync_brain_mailbox_sync *sync = iter->sync; + i_assert(sync->brain->state == DSYNC_STATE_SYNC_MSGS); + iter->msgs_sent = TRUE; /* done with all mailboxes from this iter */ @@ -259,6 +261,10 @@ dsync_brain_msg_sync_finish(struct dsync_brain_msg_iter *iter) sync->dest_msg_iter->save_results_left == 0 && dsync_worker_output_flush(sync->dest_worker) > 0 && dsync_worker_output_flush(sync->src_worker) > 0) { + dsync_worker_set_output_callback(sync->src_msg_iter->worker, + NULL, NULL); + dsync_worker_set_output_callback(sync->dest_msg_iter->worker, + NULL, NULL); sync->brain->state++; dsync_brain_sync(sync->brain); }