X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fcluster.pl;h=64cbab11ed1d6efc69ed2adc3f6896eb85ca8dee;hb=e6a53556f10b5d2f831dcd7b83655430c9b1a137;hp=1f011c55584971360363523d3c332d3e8c6f5766;hpb=88c2b296ba903fdd356e351b83fcb844e2d6eacd;p=spider.git diff --git a/perl/cluster.pl b/perl/cluster.pl index 1f011c55..64cbab11 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -60,6 +60,8 @@ use CmdAlias; use Filter; use Local; use DXDb; +use Data::Dumper; + use Fcntl ':flock'; use Carp qw(cluck); @@ -68,9 +70,10 @@ package main; @inqueue = (); # the main input queue, an array of hashes $systime = 0; # the time now (in seconds) -$version = "1.34"; # the version no of the software +$version = "1.35"; # 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 # handle disconnections sub disconnect @@ -101,7 +104,9 @@ sub rec my $dxchan = DXChannel->get_by_cnum($conn); # get the dxconnnect object for this message if (defined $err && $err) { - disconnect($dxchan) if defined $dxchan; + if ($dxchan) { + disconnect($dxchan); + } return; } @@ -148,6 +153,7 @@ sub rec # create the channel $dxchan = DXCommandmode->new($call, $conn, $user) if ($user->sort eq 'U'); $dxchan = DXProt->new($call, $conn, $user) if ($user->sort eq 'A'); + $dxchan = BBS->new($call, $conn, $user) if ($user->sort eq 'B'); die "Invalid sort of user on $call = $sort" if !$dxchan; } @@ -226,6 +232,7 @@ sub reap { $SIG{'CHLD'} = \&reap; my $cpid = wait; + @outstanding_connects = grep {$_->{pid} != $cpid} @outstanding_connects; } # this is where the input queue is dealt with and things are dispatched off to other parts of @@ -261,6 +268,7 @@ sub process_inqueue $dxchan->normal($line); disconnect($dxchan) if ($dxchan->{state} eq 'bye'); } elsif ($sort eq 'Z') { + $dxchan->conn(undef); disconnect($dxchan); } elsif ($sort eq 'D') { ; # ignored (an echo) @@ -297,7 +305,7 @@ STDOUT->autoflush(1); Log('cluster', "DXSpider V$version started"); # banner -print "DXSpider DX Cluster Version $version\nCopyright (c) 1998 Dirk Koopman G1TLH\n"; +print "DXSpider DX Cluster Version $version\nCopyright (c) 1998-1999 Dirk Koopman G1TLH\n"; # load Prefixes print "loading prefixes ...\n";