Mercurial > dovecot > original-hg > dovecot-1.2
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);