X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fcluster.pl;h=995500ca934239b4ca18ec6ba580d9ef96f8e3c8;hb=5afc02dd867b07c0ba2189be934a265df6bec4ae;hp=3e9a5a1152c10f9fd51299136c864def3de44398;hpb=01ba3df164dca5b803527a4b7db6e5d36a334f91;p=spider.git diff --git a/perl/cluster.pl b/perl/cluster.pl index 3e9a5a11..995500ca 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -38,7 +38,6 @@ BEGIN { close CLLOCK; } - use Msg; use DXVars; use DXDebug; @@ -79,7 +78,7 @@ package main; @inqueue = (); # the main input queue, an array of hashes $systime = 0; # the time now (in seconds) -$version = "1.45"; # the version no of the software +$version = "1.47"; # the version no of the software $starttime = 0; # the starting time of the cluster $lockfn = "cluster.lock"; # lock file name @outstanding_connects = (); # list of outstanding connects @@ -245,7 +244,7 @@ sub cease sub reap { my $cpid; - while (($cpid = waitpid(-1, WNOHANG)) != -1) { + while (($cpid = waitpid(-1, WNOHANG)) > 0) { dbg('reap', "cpid: $cpid"); @outstanding_connects = grep {$_->{pid} != $cpid} @outstanding_connects; $zombies-- if $zombies > 0; @@ -317,7 +316,7 @@ STDOUT->autoflush(1); Log('cluster', "DXSpider V$version started"); # banner -dbg('err', "DXSpider DX Cluster Version $version", "Copyright (c) 1998-2000 Dirk Koopman G1TLH"); +dbg('err', "DXSpider DX Cluster Version $version", "Copyright (c) 1998-2001 Dirk Koopman G1TLH"); # load Prefixes dbg('err', "loading prefixes ..."); @@ -339,21 +338,23 @@ Msg->new_server("$clusteraddr", $clusterport, \&login); dbg('err', "load badwords: " . (BadWords::load or "Ok")); # prime some signals -$SIG{INT} = \&cease; -$SIG{TERM} = \&cease; -$SIG{HUP} = 'IGNORE'; -$SIG{CHLD} = sub { $zombies++ }; - -$SIG{PIPE} = sub { dbg('err', "Broken PIPE signal received"); }; -$SIG{IO} = sub { dbg('err', "SIGIO received"); }; -$SIG{WINCH} = $SIG{STOP} = $SIG{CONT} = 'IGNORE'; -$SIG{KILL} = 'DEFAULT'; # as if it matters.... - -# catch the rest with a hopeful message -for (keys %SIG) { - if (!$SIG{$_}) { -# dbg('chan', "Catching SIG $_"); - $SIG{$_} = sub { my $sig = shift; DXDebug::confess("Caught signal $sig"); }; +unless ($^O =~ /^MS/) { + $SIG{INT} = \&cease; + $SIG{TERM} = \&cease; + $SIG{HUP} = 'IGNORE'; + $SIG{CHLD} = sub { $zombies++ }; + + $SIG{PIPE} = sub { dbg('err', "Broken PIPE signal received"); }; + $SIG{IO} = sub { dbg('err', "SIGIO received"); }; + $SIG{WINCH} = $SIG{STOP} = $SIG{CONT} = 'IGNORE'; + $SIG{KILL} = 'DEFAULT'; # as if it matters.... + + # catch the rest with a hopeful message + for (keys %SIG) { + if (!$SIG{$_}) { + # dbg('chan', "Catching SIG $_"); + $SIG{$_} = sub { my $sig = shift; DXDebug::confess("Caught signal $sig"); }; + } } } @@ -377,7 +378,6 @@ Spot->init(); dbg('err', "reading in duplicate spot and WWV info ..."); DXProt->init(); - # put in a DXCluster node for us here so we can add users and take them away DXNode->new($DXProt::me, $mycall, 0, 1, $DXProt::myprot_version);