dovecot-1.2: Added lib_signals_reset_ioloop() for handling signa...

dovecot at dovecot.org dovecot at dovecot.org
Sat Nov 1 14:49:35 EET 2008


details:   http://hg.dovecot.org/dovecot-1.2/rev/0d49326397b4
changeset: 8367:0d49326397b4
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Nov 01 14:15:00 2008 +0200
description:
Added lib_signals_reset_ioloop() for handling signals with multiple ioloops.

diffstat:

2 files changed, 12 insertions(+)
src/lib/lib-signals.c |    8 ++++++++
src/lib/lib-signals.h |    4 ++++

diffs (32 lines):

diff -r 2c111b572eee -r 0d49326397b4 src/lib/lib-signals.c
--- a/src/lib/lib-signals.c	Sat Nov 01 14:14:42 2008 +0200
+++ b/src/lib/lib-signals.c	Sat Nov 01 14:15:00 2008 +0200
@@ -187,6 +187,14 @@ void lib_signals_unset_handler(int signo
 		signo, (void *)handler, context);
 }
 
+void lib_signals_reset_ioloop(void)
+{
+	if (io_sig != NULL) {
+		io_remove(&io_sig);
+		io_sig = io_add(sig_pipe_fd[0], IO_READ, signal_read, NULL);
+	}
+}
+
 void lib_signals_init(void)
 {
 	int i;
diff -r 2c111b572eee -r 0d49326397b4 src/lib/lib-signals.h
--- a/src/lib/lib-signals.h	Sat Nov 01 14:14:42 2008 +0200
+++ b/src/lib/lib-signals.h	Sat Nov 01 14:15:00 2008 +0200
@@ -14,6 +14,10 @@ void lib_signals_unset_handler(int signo
 void lib_signals_unset_handler(int signo,
 			       signal_handler_t *handler, void *context);
 
+/* Remove and add the internal I/O handler back. This is necessary to get
+   the delayed signals to work when using multiple I/O loops. */
+void lib_signals_reset_ioloop(void);
+
 void lib_signals_init(void);
 void lib_signals_deinit(void);
 


More information about the dovecot-cvs mailing list