From 571657008020fa92df5b36c1e420e6aa1a6dc76b Mon Sep 17 00:00:00 2001 From: Elijah Perrault Date: Thu, 20 Jan 2011 14:35:42 -0700 Subject: [PATCH] Handle SIGTERM, SIGINT and SIGHUP. --- bin/auto | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/bin/auto b/bin/auto index d670ce5..106fb1e 100755 --- a/bin/auto +++ b/bin/auto @@ -64,6 +64,11 @@ if ($BFVER[0] ne VER.".".SVER.".".REV.RSTAGE."\n") { } undef @BFVER; +# Set signal handlers. +$SIG{TERM} = \&signal_TERM; +$SIG{INT} = \&signal_INT; +$SIG{HUP} = \&signal_HUP; + # Print startup message. println "* ".NAME." (version ".VER.".".SVER.".".REV.RSTAGE.") is starting up..."; @@ -234,3 +239,33 @@ sub mod_load { return 0; } } + + +## Signal handlers + +# SIGTERM +sub signal_TERM +{ + API::IRC::quit($_, "Caught SIGTERM") foreach (keys %SOCKET); + dbug "!!! Caught SIGTERM; terminating..."; + alog "!!! Caught SIGTERM; terminating..."; + sleep 1; + exit; +} + +# SIGINT +sub signal_INT +{ + API::IRC::quit($_, "Caught SIGINT") foreach (keys %SOCKET); + dbug "!!! Caught SIGINT; terminating..."; + alog "!!! Caught SIGINT; terminating..."; + sleep 1; + exit; +} + +# SIGHUP +sub signal_HUP +{ + dbug "!!! Caught SIGHUP but rehash is unavailable; ignoring"; + alog "!!! Caught SIGHUP but rehash is unavailable; ignoring"; +}