Skip to content
Snippets Groups Projects
Commit 636d2fe0 authored by Yang Tse's avatar Yang Tse
Browse files

signal handling to cleanup on SIGINT and SIGTERM
parent fb2425b1
No related branches found
No related tags found
No related merge requests found
......@@ -122,16 +122,16 @@ do {
sub catch_zap {
my $signame = shift;
print STDERR "ftpserver.pl received SIG$signame, exiting\n";
ftpkillslaves(1);
unlink($pidfile);
if($serverlogslocked) {
$serverlogslocked = 0;
clear_advisor_read_lock($SERVERLOGS_LOCK);
}
die "Somebody sent me a SIG$signame";
exit;
}
$SIG{INT} = \&catch_zap;
$SIG{KILL} = \&catch_zap;
$SIG{TERM} = \&catch_zap;
my $sfpid;
......@@ -153,6 +153,7 @@ sub sysread_or_die {
logmsg "Error: ftp$ftpdnum$ext sysread error: $!\n";
kill(9, $sfpid);
waitpid($sfpid, 0);
unlink($pidfile);
if($serverlogslocked) {
$serverlogslocked = 0;
clear_advisor_read_lock($SERVERLOGS_LOCK);
......@@ -166,6 +167,7 @@ sub sysread_or_die {
logmsg "Error: ftp$ftpdnum$ext read zero\n";
kill(9, $sfpid);
waitpid($sfpid, 0);
unlink($pidfile);
if($serverlogslocked) {
$serverlogslocked = 0;
clear_advisor_read_lock($SERVERLOGS_LOCK);
......@@ -191,6 +193,7 @@ sub startsf {
logmsg "Failed sockfilt command: $cmd\n";
kill(9, $sfpid);
waitpid($sfpid, 0);
unlink($pidfile);
if($serverlogslocked) {
$serverlogslocked = 0;
clear_advisor_read_lock($SERVERLOGS_LOCK);
......@@ -199,9 +202,6 @@ sub startsf {
}
}
# remove the file here so that if startsf() fails, it is very noticeable
unlink($pidfile);
startsf();
logmsg sprintf("FTP server listens on port IPv%d/$port\n", $ipv6?6:4);
......@@ -939,6 +939,8 @@ while(1) {
print SFWRITE "QUIT\n";
waitpid $sfpid, 0;
unlink($pidfile);
if($serverlogslocked) {
$serverlogslocked = 0;
clear_advisor_read_lock($SERVERLOGS_LOCK);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment