dovecot-2.0: master: Add IO listeners to anvil after forking. Fi...

dovecot at dovecot.org dovecot at dovecot.org
Thu Oct 15 22:17:19 EEST 2009


details:   http://hg.dovecot.org/dovecot-2.0/rev/5147503f4123
changeset: 10069:5147503f4123
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Oct 15 15:17:12 2009 -0400
description:
master: Add IO listeners to anvil after forking. Fixes kqueue.

diffstat:

3 files changed, 10 insertions(+), 1 deletion(-)
src/master/service-anvil.c   |    8 +++++++-
src/master/service-anvil.h   |    1 +
src/master/service-monitor.c |    2 ++

diffs (49 lines):

diff -r 14eeed133d57 -r 5147503f4123 src/master/service-anvil.c
--- a/src/master/service-anvil.c	Thu Oct 15 13:51:37 2009 -0400
+++ b/src/master/service-anvil.c	Thu Oct 15 15:17:12 2009 -0400
@@ -113,8 +113,14 @@ int service_list_init_anvil(struct servi
 	service_list->anvil_kills =
 		service_process_notify_init(service_list->nonblocking_anvil_fd[1],
 					    service_process_write_anvil_kill);
+	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);
-	return 0;
 }
 
 void service_list_deinit_anvil(struct service_list *service_list)
diff -r 14eeed133d57 -r 5147503f4123 src/master/service-anvil.h
--- a/src/master/service-anvil.h	Thu Oct 15 13:51:37 2009 -0400
+++ b/src/master/service-anvil.h	Thu Oct 15 15:17:12 2009 -0400
@@ -4,6 +4,7 @@ int service_list_init_anvil(struct servi
 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 -r 14eeed133d57 -r 5147503f4123 src/master/service-monitor.c
--- a/src/master/service-monitor.c	Thu Oct 15 13:51:37 2009 -0400
+++ b/src/master/service-monitor.c	Thu Oct 15 15:17:12 2009 -0400
@@ -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 servi
 	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);


More information about the dovecot-cvs mailing list