Mercurial > dovecot > original-hg > dovecot-1.2
diff src/deliver/deliver.c @ 3620:3360cc019737 HEAD
Implemented new signal handling framework, which makes handling signals much
easier.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 25 Sep 2005 14:07:32 +0300 |
parents | 70c200deddf7 |
children | d53d0de2ffbb |
line wrap: on
line diff
--- a/src/deliver/deliver.c Sun Sep 25 13:52:27 2005 +0300 +++ b/src/deliver/deliver.c Sun Sep 25 14:07:32 2005 +0300 @@ -38,8 +38,12 @@ static struct ioloop *ioloop; static int return_value = EX_SOFTWARE; -static void sig_quit(int signo __attr_unused__) +static void sig_die(int signo, void *context __attr_unused__) { + /* warn about being killed because of some signal, except SIGINT (^C) + which is too common at least while testing :) */ + if (signo != SIGINT) + i_warning("Killed with signal %d", signo); io_loop_stop(ioloop); } @@ -349,7 +353,10 @@ const char *str; lib_init(); - lib_init_signals(sig_quit); + lib_signals_init(); + lib_signals_set_handler(SIGINT, TRUE, sig_die, NULL); + lib_signals_set_handler(SIGTERM, TRUE, sig_die, NULL); + lib_signals_set_handler(SIGPIPE, FALSE, NULL, NULL); ioloop = io_loop_create(default_pool); destination = NULL; @@ -453,6 +460,7 @@ mail_storage_destroy(storage); mail_storage_deinit(); io_loop_destroy(ioloop); + lib_signals_deinit(); lib_deinit(); return EX_OK;