]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master: Added master_service_set_die_with_master.
authorTimo Sirainen <tss@iki.fi>
Fri, 4 Sep 2009 21:32:31 +0000 (17:32 -0400)
committerTimo Sirainen <tss@iki.fi>
Fri, 4 Sep 2009 21:32:31 +0000 (17:32 -0400)
--HG--
branch : HEAD

src/lib-master/master-service-private.h
src/lib-master/master-service.c
src/lib-master/master-service.h

index 8759c92e904b1754f9136138ac2530513a0338ce..ecedc20e77d73cc128da06d7bc90e82675927075 100644 (file)
@@ -45,6 +45,7 @@ struct master_service {
        unsigned int log_directly:1;
        unsigned int initial_status_sent:1;
        unsigned int default_settings:1;
+       unsigned int die_with_master:1;
 };
 
 #endif
index 22ff14356c404635144d2b8c85a5573c4ebc7797..2d88ca0b13f8d00d92ed45d5d0550ee31b952b88 100644 (file)
@@ -178,6 +178,12 @@ void master_service_init_log(struct master_service *service, const char *prefix,
        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 @@ bool master_service_parse_option(struct master_service *service,
 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);
index c66766d968f33b798e577554498b6cd4dd6e67a0..0a313b93bba941796ff0c495986e0ece7c971945 100644 (file)
@@ -52,6 +52,11 @@ void master_service_env_clean(bool preserve_home);
 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);