changeset 12124:eb5adb193064

dsync: Don't crash/hang if syncing fails before ioloop is started.
author Timo Sirainen <tss@iki.fi>
date Wed, 15 Sep 2010 18:59:34 +0100
parents f026e809113d
children 7000a9833b19
files src/dsync/dsync-brain.c src/dsync/dsync-brain.h src/dsync/dsync.c
diffstat 3 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/dsync/dsync-brain.c	Wed Sep 15 16:28:32 2010 +0100
+++ b/src/dsync/dsync-brain.c	Wed Sep 15 18:59:34 2010 +0100
@@ -900,3 +900,10 @@
 		dsync_worker_has_unexpected_changes(brain->src_worker) ||
 		dsync_worker_has_unexpected_changes(brain->dest_worker);
 }
+
+bool dsync_brain_has_failed(struct dsync_brain *brain)
+{
+	return brain->failed ||
+		dsync_worker_has_failed(brain->src_worker) ||
+		dsync_worker_has_failed(brain->dest_worker);
+}
--- a/src/dsync/dsync-brain.h	Wed Sep 15 16:28:32 2010 +0100
+++ b/src/dsync/dsync-brain.h	Wed Sep 15 18:59:34 2010 +0100
@@ -23,5 +23,6 @@
 void dsync_brain_sync_all(struct dsync_brain *brain);
 
 bool dsync_brain_has_unexpected_changes(struct dsync_brain *brain);
+bool dsync_brain_has_failed(struct dsync_brain *brain);
 
 #endif
--- a/src/dsync/dsync.c	Wed Sep 15 16:28:32 2010 +0100
+++ b/src/dsync/dsync.c	Wed Sep 15 18:59:34 2010 +0100
@@ -314,7 +314,8 @@
 		server = NULL;
 		dsync_brain_sync(brain);
 
-		master_service_run(master_service, dsync_connected);
+		if (!dsync_brain_has_failed(brain))
+			master_service_run(master_service, dsync_connected);
 	}
 
 	if (brain == NULL)