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