opnsense-ports/mail/dovecot2/files/patch-kqueue
Franco Fichtner bd4bf00f3c */*: sync with upstream
Taken from: FreeBSD
2016-07-06 08:39:37 +02:00

64 lines
1.9 KiB
Text

From ffd8dc932516bc55bf01d91355540daab365e5e9 Mon Sep 17 00:00:00 2001
From: Timo Sirainen <timo.sirainen@dovecot.fi>
Date: Mon, 4 Jul 2016 15:05:00 +0300
Subject: [PATCH] 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().
---
src/master/service-listen.c | 5 -----
src/master/service-monitor.c | 7 +++++++
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/master/service-listen.c b/src/master/service-listen.c
index 1d3e399..96b52e8 100644
--- src/master/service-listen.c
+++ src/master/service-listen.c
@@ -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 @@ static int services_listen_master(struct service_list *service_list)
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;
}
diff --git a/src/master/service-monitor.c b/src/master/service-monitor.c
index 44cdb26..408edf4 100644
--- src/master/service-monitor.c
+++ src/master/service-monitor.c
@@ -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 @@ void services_monitor_start(struct service_list *service_list)
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;