aboutsummaryrefslogtreecommitdiffstats
path: root/util-src/signal.c
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2010-01-10 03:54:29 +0000
committerMatthew Wild <mwild1@gmail.com>2010-01-10 03:54:29 +0000
commit15b926d7a2aec0d261ef9d416481aed8dbf0b072 (patch)
tree05979947eb1b7c23fe03f113925ea3c3c850a634 /util-src/signal.c
parent2fca9d7e796f03bdb388642e2fc8086c783604d1 (diff)
downloadprosody-15b926d7a2aec0d261ef9d416481aed8dbf0b072.tar.gz
prosody-15b926d7a2aec0d261ef9d416481aed8dbf0b072.zip
util.signal: Restore the old debug hook earlier, just in case we receive another signal between clearing the signal queue and restoring it
Diffstat (limited to 'util-src/signal.c')
-rw-r--r--util-src/signal.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/util-src/signal.c b/util-src/signal.c
index 68ef73de..53bbc4ed 100644
--- a/util-src/signal.c
+++ b/util-src/signal.c
@@ -165,6 +165,9 @@ static struct signal_event *last_event = NULL;
static void sighook(lua_State *L, lua_Debug *ar)
{
+ /* restore the old hook */
+ lua_sethook(L, Hsig, Hmask, Hcount);
+
lua_pushstring(L, LUA_SIGNAL);
lua_gettable(L, LUA_REGISTRYINDEX);
@@ -180,8 +183,6 @@ static void sighook(lua_State *L, lua_Debug *ar)
lua_pop(L, 1); /* pop lua_signal table */
- /* restore the old hook */
- lua_sethook(L, Hsig, Hmask, Hcount);
}
static void handle(int sig)