Commit 303f74c7 authored by Yang Tse's avatar Yang Tse
Browse files

reapply diff between revisions 1.103 and 1.102
parent 4ea8ad58
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -138,16 +138,16 @@ if($proto !~ /^(ftp|imap|pop3|smtp)\z/) {

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;

@@ -169,6 +169,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);
@@ -182,6 +183,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);
@@ -207,6 +209,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);
@@ -215,9 +218,6 @@ sub startsf {
    }
}

# remove the file here so that if startsf() fails, it is very noticeable 
unlink($pidfile);

startsf();

logmsg sprintf("%s server listens on port IPv%d/$port\n", uc($proto),
@@ -1110,6 +1110,8 @@ while(1) {
print SFWRITE "QUIT\n";
waitpid $sfpid, 0;

unlink($pidfile);

if($serverlogslocked) {
    $serverlogslocked = 0;
    clear_advisor_read_lock($SERVERLOGS_LOCK);