Skip to content

Commit

Permalink
Diego warned me that the construct I used, signal sent to negative PID,
Browse files Browse the repository at this point in the history
is not portable. Replaced it with his construct, the negative signal.
Also added the short sleep after socket close, as in his patch.


git-svn-id: http://svn.perl.org/qpsmtpd/trunk@948 958fd67b-6ff1-0310-b445-bb7760255be9
  • Loading branch information
radu committed Sep 29, 2008
1 parent acdac0c commit 069d1fa
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion qpsmtpd-prefork
Expand Up @@ -19,6 +19,9 @@ use Qpsmtpd::TcpServer::Prefork;
use Qpsmtpd::Constants;
use Getopt::Long;

use Config;
defined $Config{sig_name} || die "No signals?";

my $has_ipv6 = Qpsmtpd::TcpServer::has_ipv6;

if ($has_ipv6) {
Expand All @@ -27,6 +30,14 @@ if ($has_ipv6) {

#use Time::HiRes qw(gettimeofday tv_interval);

#get available signals
my %sig_num;
my $i = 0;
foreach my $sig_name ( split( /\s/, $Config{sig_name} ) )
{
$sig_num{$sig_name} = $i++;
}

# secure shell
$ENV{'PATH'} = '/bin:/usr/bin';
delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};
Expand Down Expand Up @@ -227,11 +238,15 @@ sub run {
# prevent another signal and disable reaper
$SIG{$sig} = $SIG{CHLD} = $SIG{HUP} = 'IGNORE';

# a notice, before the sleep below
info("shutting down");

# close socket
$d->close();
sleep 2;

# send signal to process group
kill $sig, -$$;
kill -$sig_num{$sig} => $$;

# cleanup
IPC::Shareable->clean_up;
Expand Down

0 comments on commit 069d1fa

Please sign in to comment.