]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dsync: Fixed brain unit test not to crash at deinit.
authorTimo Sirainen <tss@iki.fi>
Sun, 11 Jul 2010 17:32:43 +0000 (18:32 +0100)
committerTimo Sirainen <tss@iki.fi>
Sun, 11 Jul 2010 17:32:43 +0000 (18:32 +0100)
src/dsync/dsync-brain.c
src/dsync/dsync-brain.h
src/dsync/dsync.c
src/dsync/test-dsync-brain.c

index cb6339baf94db084d10e52fb3a56461f7f81a164..6e62d057d299feb6ed01c0d3f9e5a74d0b5941c9 100644 (file)
@@ -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);
 }
 
index 0c6319b27cc89cc72c161a6244b5db89965b5d6f..44e332d5d71ff20d844b93fe9e4c846b06d711f1 100644 (file)
@@ -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;
index d813048417fa86eb1da8c5007faec3878cf005c2..a33e676998d4ccb467258da710dfd972161ca616 100644 (file)
@@ -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) {
index c103ae8eccf8f25c4b785aa8d3707fda9a78351a..a419a9118e7d7f8178d99dfeef35b63367ceb633 100644 (file)
@@ -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 */