Mercurial > dovecot > core-2.2
changeset 20495:143b367cc784
master: Add master socket's io listener later.
Most importantly this fixes startup failure with kqueue:
Panic: kevent(EV_ADD, READ, 56) failed: Bad file descriptor
kqueue doesn't survive a fork(), so this change delays its creation until
after fork().
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Mon, 04 Jul 2016 15:05:00 +0300 |
parents | d94cdfbc61e1 |
children | bb728a4cbbde |
files | src/master/service-listen.c src/master/service-monitor.c |
diffstat | 2 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/master/service-listen.c Mon Jul 04 14:44:40 2016 +0300 +++ b/src/master/service-listen.c Mon Jul 04 15:05:00 2016 +0300 @@ -6,7 +6,6 @@ #include "fd-close-on-exec.h" #include "ioloop.h" #include "net.h" -#include "master-client.h" #ifdef HAVE_SYSTEMD #include "sd-daemon.h" #endif @@ -357,10 +356,6 @@ if (service_list->master_fd == -1) return 0; - - service_list->io_master = - io_add(service_list->master_fd, IO_READ, - master_client_connected, service_list); return 1; }
--- a/src/master/service-monitor.c Mon Jul 04 14:44:40 2016 +0300 +++ b/src/master/service-monitor.c Mon Jul 04 15:05:00 2016 +0300 @@ -7,6 +7,7 @@ #include "hash.h" #include "str.h" #include "safe-mkstemp.h" +#include "master-client.h" #include "service.h" #include "service-process.h" #include "service-process-notify.h" @@ -452,6 +453,12 @@ return; service_anvil_monitor_start(service_list); + if (service_list->io_master == NULL) { + service_list->io_master = + io_add(service_list->master_fd, IO_READ, + master_client_connected, service_list); + } + array_foreach(&service_list->services, services) { struct service *service = *services;