changeset 11786:fd33ccbf235e

dsync: Fixed brain unit test not to crash at deinit.
author Timo Sirainen <tss@iki.fi>
date Sun, 11 Jul 2010 18:32:43 +0100
parents d2b09976c704
children cd4db940dcbf
files src/dsync/dsync-brain.c src/dsync/dsync-brain.h src/dsync/dsync.c src/dsync/test-dsync-brain.c
diffstat 4 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/dsync/dsync-brain.c	Sun Jul 11 13:25:38 2010 +0100
+++ b/src/dsync/dsync-brain.c	Sun Jul 11 18:32:43 2010 +0100
@@ -785,7 +785,7 @@
 		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);
 }
 
--- a/src/dsync/dsync-brain.h	Sun Jul 11 13:25:38 2010 +0100
+++ b/src/dsync/dsync-brain.h	Sun Jul 11 18:32:43 2010 +0100
@@ -6,7 +6,9 @@
 	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;
--- a/src/dsync/dsync.c	Sun Jul 11 13:25:38 2010 +0100
+++ b/src/dsync/dsync.c	Sun Jul 11 18:32:43 2010 +0100
@@ -283,8 +283,8 @@
 		}
 
 		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) {
--- a/src/dsync/test-dsync-brain.c	Sun Jul 11 13:25:38 2010 +0100
+++ b/src/dsync/test-dsync-brain.c	Sun Jul 11 18:32:43 2010 +0100
@@ -150,7 +150,8 @@
 	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 @@
 	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 */