From: Timo Sirainen Date: Sun, 11 Jul 2010 17:32:43 +0000 (+0100) Subject: dsync: Fixed brain unit test not to crash at deinit. X-Git-Tag: 2.0.rc3~90 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8d4424d09b170dacba920d4a89178a1c932cafe2;p=thirdparty%2Fdovecot%2Fcore.git dsync: Fixed brain unit test not to crash at deinit. --- diff --git a/src/dsync/dsync-brain.c b/src/dsync/dsync-brain.c index cb6339baf9..6e62d057d2 100644 --- a/src/dsync/dsync-brain.c +++ b/src/dsync/dsync-brain.c @@ -785,7 +785,7 @@ static void dsync_brain_worker_finished(bool success, void *context) dsync_brain_fail(brain); brain->state++; - if (brain->to == NULL) + if (brain->to == NULL && (brain->flags & DSYNC_BRAIN_FLAG_LOCAL) == 0) brain->to = timeout_add(0, dsync_brain_sync, brain); } diff --git a/src/dsync/dsync-brain.h b/src/dsync/dsync-brain.h index 0c6319b27c..44e332d5d7 100644 --- a/src/dsync/dsync-brain.h +++ b/src/dsync/dsync-brain.h @@ -6,7 +6,9 @@ enum dsync_brain_flags { DSYNC_BRAIN_FLAG_VERBOSE = 0x02, /* Run in backup mode. All changes from src are forced into dest, discarding any potential changes in dest. */ - DSYNC_BRAIN_FLAG_BACKUP = 0x04 + DSYNC_BRAIN_FLAG_BACKUP = 0x04, + /* Run in "local mode". Don't use ioloop. */ + DSYNC_BRAIN_FLAG_LOCAL = 0x08 }; struct dsync_worker; diff --git a/src/dsync/dsync.c b/src/dsync/dsync.c index d813048417..a33e676998 100644 --- a/src/dsync/dsync.c +++ b/src/dsync/dsync.c @@ -283,8 +283,8 @@ int main(int argc, char *argv[]) } i_set_failure_prefix(t_strdup_printf("dsync(%s): ", username)); - brain = dsync_brain_init(worker1, worker2, - mailbox, brain_flags); + brain = dsync_brain_init(worker1, worker2, mailbox, + brain_flags | DSYNC_BRAIN_FLAG_LOCAL); server = NULL; dsync_brain_sync_all(brain); } else if (dsync_server) { diff --git a/src/dsync/test-dsync-brain.c b/src/dsync/test-dsync-brain.c index c103ae8ecc..a419a9118e 100644 --- a/src/dsync/test-dsync-brain.c +++ b/src/dsync/test-dsync-brain.c @@ -150,7 +150,8 @@ static void test_dsync_brain(void) src_test_worker = (struct test_dsync_worker *)src_worker; dest_test_worker = (struct test_dsync_worker *)dest_worker; - brain = dsync_brain_init(src_worker, dest_worker, NULL, 0); + brain = dsync_brain_init(src_worker, dest_worker, NULL, + DSYNC_BRAIN_FLAG_LOCAL); dsync_brain_sync(brain); /* have brain read the mailboxes */ @@ -240,7 +241,8 @@ static void test_dsync_brain_full(void) dest_test_worker = (struct test_dsync_worker *)dest_worker; brain = dsync_brain_init(src_worker, dest_worker, NULL, - DSYNC_BRAIN_FLAG_FULL_SYNC); + DSYNC_BRAIN_FLAG_FULL_SYNC | + DSYNC_BRAIN_FLAG_LOCAL); dsync_brain_sync(brain); /* have brain read the mailboxes */