]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
master: Close all listener fds at deinit.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 18 Jun 2018 19:38:48 +0000 (22:38 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 18 Jun 2018 20:02:03 +0000 (20:02 +0000)
Just makes the deinit cleaner.

src/master/service.c

index 6e7e6c69fefe371f04cfdc33b9fd6ccf0a12cd6c..af4b322f1e78cb983a81841870b7924acf5767ff 100644 (file)
@@ -655,10 +655,17 @@ void service_list_ref(struct service_list *service_list)
 
 void service_list_unref(struct service_list *service_list)
 {
+       struct service *const *servicep;
+       struct service_listener *const *listenerp;
+
        i_assert(service_list->refcount > 0);
        if (--service_list->refcount > 0)
                return;
 
+       array_foreach(&service_list->services, servicep) {
+               array_foreach(&(*servicep)->listeners, listenerp)
+                       i_close_fd(&(*listenerp)->fd);
+       }
        timeout_remove(&service_list->to_kill);
        pool_unref(&service_list->set_pool);
        pool_unref(&service_list->pool);