changeset 9878:c58c40a83bbd HEAD

lib-master: Added master_service_set_die_with_master.
author Timo Sirainen <tss@iki.fi>
date Fri, 04 Sep 2009 17:32:31 -0400
parents 3de6af0eb499
children e11bd2547bb2
files src/lib-master/master-service-private.h src/lib-master/master-service.c src/lib-master/master-service.h
diffstat 3 files changed, 13 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-master/master-service-private.h	Fri Sep 04 17:14:47 2009 -0400
+++ b/src/lib-master/master-service-private.h	Fri Sep 04 17:32:31 2009 -0400
@@ -45,6 +45,7 @@
 	unsigned int log_directly:1;
 	unsigned int initial_status_sent:1;
 	unsigned int default_settings:1;
+	unsigned int die_with_master:1;
 };
 
 #endif
--- a/src/lib-master/master-service.c	Fri Sep 04 17:14:47 2009 -0400
+++ b/src/lib-master/master-service.c	Fri Sep 04 17:32:31 2009 -0400
@@ -178,6 +178,12 @@
 	i_set_failure_timestamp_format(service->set->log_timestamp);
 }
 
+void master_service_set_die_with_master(struct master_service *service,
+					bool set)
+{
+	service->die_with_master = set;
+}
+
 bool master_service_parse_option(struct master_service *service,
 				 int opt, const char *arg)
 {
@@ -215,7 +221,7 @@
 static void master_service_error(struct master_service *service)
 {
 	if (service->master_status.available_count ==
-	    service->total_available_count)
+	    service->total_available_count || service->die_with_master)
 		master_service_stop(service);
 	else
 		io_listeners_remove(service);
--- a/src/lib-master/master-service.h	Fri Sep 04 17:14:47 2009 -0400
+++ b/src/lib-master/master-service.h	Fri Sep 04 17:32:31 2009 -0400
@@ -52,6 +52,11 @@
 void master_service_init_log(struct master_service *service, const char *prefix,
 			     unsigned int max_lines_per_sec);
 
+/* If set, die immediately when connection to master is lost.
+   Normally all existing clients are handled first. */
+void master_service_set_die_with_master(struct master_service *service,
+					bool set);
+
 /* Set maximum number of clients we can handle. Default is given by master. */
 void master_service_set_client_limit(struct master_service *service,
 				     unsigned int client_limit);