From 7bb5e2cdca9445e1c9ebf3a29efc80ef9d3cbed4 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Thu, 4 Nov 2004 09:56:26 +0000 Subject: [PATCH] Don't log messages in signal handlers; defer it to mainline Logging in signal handlers can cause deadlocks. --- pppd/main.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pppd/main.c b/pppd/main.c index fe2e953..6915bae 100644 --- a/pppd/main.c +++ b/pppd/main.c @@ -40,7 +40,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#define RCSID "$Id: main.c,v 1.139 2004/11/04 09:46:50 paulus Exp $" +#define RCSID "$Id: main.c,v 1.140 2004/11/04 09:56:26 paulus Exp $" #include #include @@ -673,12 +673,14 @@ handle_events() waiting = 0; calltimeout(); if (got_sighup) { + info("Hangup (SIGHUP)"); kill_link = 1; got_sighup = 0; if (status != EXIT_HANGUP) status = EXIT_USER_REQUEST; } if (got_sigterm) { + info("Terminating on signal %d", got_sigterm); kill_link = 1; persist = 0; status = EXIT_USER_REQUEST; @@ -1394,7 +1396,7 @@ static void hup(sig) int sig; { - info("Hangup (SIGHUP)"); + /* can't log a message here, it can deadlock */ got_sighup = 1; if (conn_running) /* Send the signal to the [dis]connector process(es) also */ @@ -1415,8 +1417,8 @@ static void term(sig) int sig; { - info("Terminating on signal %d.", sig); - got_sigterm = 1; + /* can't log a message here, it can deadlock */ + got_sigterm = sig; if (conn_running) /* Send the signal to the [dis]connector process(es) also */ kill_my_pg(sig); -- 2.39.2