From 03844c28ba490307de77982a80355cc56e568551 Mon Sep 17 00:00:00 2001 From: wens Date: Thu, 11 Jun 2009 10:52:59 +0000 Subject: Move SIGHUP handler after daemonize Call event_reinit after daemonize (for kqueue) git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4561 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- daemon/logind/logind.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/daemon/logind/logind.c b/daemon/logind/logind.c index d8220362..91053b9e 100644 --- a/daemon/logind/logind.c +++ b/daemon/logind/logind.c @@ -1338,9 +1338,7 @@ main(int argc, char *argv[]) reload_data(); - event_init(); - signal_set(&ev_sighup, SIGHUP, sighup_cb, &ev_sighup); - signal_add(&ev_sighup, NULL); + struct event_base *evb = event_init(); // bind ports if (port && bind_port(port) < 0) @@ -1379,6 +1377,13 @@ main(int argc, char *argv[]) daemonize(BBSHOME "/run/logind.pid", NULL); } + // Some event notification mechanisms don't work across forks (e.g. kqueue) + event_reinit(evb); + + // SIGHUP handler is reset in daemonize() + signal_set(&ev_sighup, SIGHUP, sighup_cb, &ev_sighup); + signal_add(&ev_sighup, NULL); + // create tunnel if ( (tfd = tobindex(tunnel_path, 1, _set_bind_opt, 1)) < 0) { -- cgit v1.2.3