]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Added lib_signals_reset_ioloop() for handling signals with multiple ioloops.
authorTimo Sirainen <tss@iki.fi>
Sat, 1 Nov 2008 12:15:00 +0000 (14:15 +0200)
committerTimo Sirainen <tss@iki.fi>
Sat, 1 Nov 2008 12:15:00 +0000 (14:15 +0200)
--HG--
branch : HEAD

src/lib/lib-signals.c
src/lib/lib-signals.h

index 3c5068cde183be7118b332ad533bd1638c8e8c83..b254b84f332a16a65faec831daf95ed14ddaeb5c 100644 (file)
@@ -187,6 +187,14 @@ void lib_signals_unset_handler(int signo, signal_handler_t *handler,
                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;
index 9cf2d10726f299f13ad377f32eb3420fa08f74e4..ae9840531097991204045299f385cc5e8a8f52a4 100644 (file)
@@ -14,6 +14,10 @@ void lib_signals_ignore(int signo, bool restart_syscalls);
 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);