]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
master: Added service_monitor_stop_close() to stops service and close its listeners.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 28 Jun 2016 20:38:48 +0000 (23:38 +0300)
committerGitLab <gitlab@git.dovecot.net>
Wed, 29 Jun 2016 16:15:03 +0000 (19:15 +0300)
src/master/service-monitor.c
src/master/service-monitor.h

index fb4f64f5b258cd78b696c5e60f230547e52ebe0a..a90c4ebe8ce4dbb0146c1243c712358b623dc932 100644 (file)
@@ -543,6 +543,20 @@ void service_monitor_stop(struct service *service)
                timeout_remove(&service->to_prefork);
 }
 
+void service_monitor_stop_close(struct service *service)
+{
+       struct service_listener *const *listeners;
+
+       service_monitor_stop(service);
+
+       array_foreach(&service->listeners, listeners) {
+               struct service_listener *l = *listeners;
+
+               if (l->fd != -1)
+                       i_close_fd(&l->fd);
+       }
+}
+
 static void services_monitor_wait(struct service_list *service_list)
 {
        struct service *const *servicep;
index 848cb3c1e0e9c4895842ff0c255285a3df6b1ce1..7dd1c4db91ff6240bdf08cf953f5262f5bc05803 100644 (file)
@@ -11,6 +11,7 @@ void services_monitor_stop(struct service_list *service_list, bool wait);
 void services_monitor_reap_children(void);
 
 void service_monitor_stop(struct service *service);
+void service_monitor_stop_close(struct service *service);
 void service_monitor_listen_start(struct service *service);
 void service_monitor_listen_stop(struct service *service);