Clean up shutdown.

This commit is contained in:
Elijah Perrault committed 2011-02-15 14:18:48 -07:00
1 parent 55071e09d0
commit df401193dc
4 files changed
+17 -22

No files matched your search

-5
View File
@@ -438,9 +438,6 @@ API::Std::cmd_add('SHUTDOWN', 2, 'cmd.shutdown', \%Core::Cmd::HELP_SHUTDOWN, \&C
API::Std::cmd_add('RESTART', 2, 'cmd.restart', \%Core::Cmd::HELP_RESTART, \&Core::Cmd::cmd_restart);
API::Std::cmd_add('REHASH', 2, 'cmd.rehash', \%Core::Cmd::HELP_REHASH, \&Core::Cmd::cmd_rehash);
API::Std::cmd_add('HELP', 2, 0, \%Core::Cmd::HELP_HELP, \&Core::Cmd::cmd_help);
# Core events.
API::Std::event_add('on_shutdown');
# Infinite while loop.
while (1) {
@@ -481,9 +478,7 @@ while (1) {
delete $SOCKET{$sockid};
if (!keys %SOCKET) {
# No more connections, stop the program.
$Auto::DB->disconnect;
API::Std::event_run('on_shutdown');
if (-e "$Bin/auto.pid") { unlink "$Bin/auto.pid"; }
dbug '* No more IRC connections, shutting down.';
alog '* No more IRC connections, shutting down.';
sleep 1;
+1
View File
@@ -3,6 +3,7 @@ Auto IRC Bot 3.0: Change Log
3.0 Indev
===============================================================================
* Clean up shutdown.
* Created event on_shutdown.
* Shutdown if there are no more IRC connections.
* Added the ability to use printf(3) % variables in trans().
+2 -4
View File
@@ -142,8 +142,7 @@ sub cmd_shutdown
dbug "Got SHUTDOWN from ".$data{nick}."!".$data{user}."@".$data{host}."/".$data{svr}."! Shutting down. . .";
alog "Got SHUTDOWN from ".$data{nick}."!".$data{user}."@".$data{host}."/".$data{svr}."! Shutting down. . .";
quit($_, "SHUTDOWN from ".$data{nick}."/".$data{svr}) foreach (keys %Auto::SOCKET);
$Auto::DB->disconnect;
system("rm $Auto::Bin/auto.pid");
API::Std::event_run('on_shutdown');
exit;
# To appease PerlCritic.
@@ -164,8 +163,7 @@ sub cmd_restart
dbug "Got RESTART from ".$data{nick}."!".$data{user}."@".$data{host}."/".$data{svr}."! Restarting. . .";
alog "Got RESTART from ".$data{nick}."!".$data{user}."@".$data{host}."/".$data{svr}."! Restarting. . .";
quit($_, "RESTART from ".$data{nick}."/".$data{svr}) foreach (keys %Auto::SOCKET);
$Auto::DB->disconnect;
system("rm $Auto::Bin/auto.pid") if -e "$Auto::Bin/auto.pid";
API::Std::event_run('on_shutdown');
# Time to come back from the dead!
if ($Auto::DEBUG) {
+14 -13
View File
@@ -7,10 +7,13 @@ use warnings;
use English qw(-no_match_vars);
use Sys::Hostname;
use feature qw(switch);
use API::Std qw(conf_get err);
use API::Std qw(hook_add conf_get err);
use API::Log qw(println dbug alog);
our $VERSION = 3.000000;
# Core events.
API::Std::event_add('on_shutdown');
# Update checker.
sub checkver
{
@@ -203,6 +206,13 @@ sub rehash
return 1;
}
# Shutdown.
hook_add('on_shutdown', 'shutdown.core_cleanup', sub {
if (defined $Auto::DB) { $Auto::DB->disconnect; }
if (-e "$Auto::Bin/auto.pid") { unlink "$Auto::Bin/auto.pid"; }
return 1;
});
###################
# Signal handlers #
###################
@@ -211,13 +221,10 @@ sub rehash
sub signal_term
{
API::Std::event_run('on_sigterm');
API::Std::event_run('on_shutdown');
foreach (keys %Auto::SOCKET) { API::IRC::quit($_, 'Caught SIGTERM'); }
$Auto::DB->disconnect;
dbug '!!! Caught SIGTERM; terminating...';
alog '!!! Caught SIGTERM; terminating...';
if (-e "$Auto::Bin/auto.pid") {
unlink "$Auto::Bin/auto.pid";
}
sleep 1;
exit;
}
@@ -226,13 +233,10 @@ sub signal_term
sub signal_int
{
API::Std::event_run('on_sigint');
API::Std::event_run('on_shutdown');
foreach (keys %Auto::SOCKET) { API::IRC::quit($_, 'Caught SIGINT'); }
$Auto::DB->disconnect;
dbug '!!! Caught SIGINT; terminating...';
alog '!!! Caught SIGINT; terminating...';
if (-e "$Auto::Bin/auto.pid") {
unlink "$Auto::Bin/auto.pid";
}
sleep 1;
exit;
}
@@ -266,10 +270,7 @@ sub signal_perldie
return if $EXCEPTIONS_BEING_CAUGHT;
alog 'Perl Fatal: '.$diemsg.' -- Terminating program!';
foreach (keys %Auto::SOCKET) { API::IRC::quit($_, 'A fatal error occurred!'); }
$Auto::DB->disconnect;
if (-e "$Auto::Bin/auto.pid") {
unlink "$Auto::Bin/auto.pid";
}
API::Std::event_run('on_shutdown');
sleep 1;
println 'FATAL: '.$diemsg;
exit;