changeset 8367:0d49326397b4 HEAD

Added lib_signals_reset_ioloop() for handling signals with multiple ioloops.
author Timo Sirainen <tss@iki.fi>
date Sat, 01 Nov 2008 14:15:00 +0200
parents 2c111b572eee
children 9babcdc6f4f7
files src/lib/lib-signals.c src/lib/lib-signals.h
diffstat 2 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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 @@
 		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;
--- 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,
 			       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);