From fb08a91e3f2949ecefb647fa38206ca9aad5307f Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 15 Oct 2009 15:17:12 -0400 Subject: [PATCH] master: Add IO listeners to anvil after forking. Fixes kqueue. --HG-- branch : HEAD --- src/master/service-anvil.c | 8 +++++++- src/master/service-anvil.h | 1 + src/master/service-monitor.c | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/master/service-anvil.c b/src/master/service-anvil.c index aef2075ec6..b8bc648f7c 100644 --- a/src/master/service-anvil.c +++ b/src/master/service-anvil.c @@ -113,10 +113,16 @@ int service_list_init_anvil(struct service_list *service_list, service_list->anvil_kills = service_process_notify_init(service_list->nonblocking_anvil_fd[1], service_process_write_anvil_kill); - service_list_anvil_discard_input(service_list); return 0; } +void services_anvil_init(struct service_list *service_list) +{ + /* this can't be in _init_anvil() because we can't do io_add()s + before forking with kqueue. */ + service_list_anvil_discard_input(service_list); +} + void service_list_deinit_anvil(struct service_list *service_list) { service_list_anvil_discard_input_stop(service_list); diff --git a/src/master/service-anvil.h b/src/master/service-anvil.h index 05c6473eba..7c467abe4c 100644 --- a/src/master/service-anvil.h +++ b/src/master/service-anvil.h @@ -4,6 +4,7 @@ int service_list_init_anvil(struct service_list *service_list, const char **error_r); void service_list_deinit_anvil(struct service_list *service_list); +void services_anvil_init(struct service_list *service_list); void service_anvil_process_created(struct service *service); void service_anvil_process_destroyed(struct service *service); diff --git a/src/master/service-monitor.c b/src/master/service-monitor.c index 2f4d7f48c2..6fd1eeedbd 100644 --- a/src/master/service-monitor.c +++ b/src/master/service-monitor.c @@ -9,6 +9,7 @@ #include "service-auth-source.h" #include "service-process.h" #include "service-process-notify.h" +#include "service-anvil.h" #include "service-log.h" #include "service-monitor.h" @@ -267,6 +268,7 @@ void services_monitor_start(struct service_list *service_list) struct service *const *services; unsigned int i, count; + services_anvil_init(service_list); services_log_init(service_list); services = array_get(&service_list->services, &count); -- 2.47.3