X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=perl%2Fcluster.pl;h=9c7557bf4fb02b79a8ae974187a31bcdc7099555;hb=f39c2f89886d01a067a748a77bf442fbd5921efa;hp=20e80ddbfe16f61978b8f5731431a94c2e19375f;hpb=5b0cb88ef61ecda87a29033d8fc70edc617afc62;p=spider.git diff --git a/perl/cluster.pl b/perl/cluster.pl index 20e80ddb..9c7557bf 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -69,6 +69,7 @@ use DXDb; use DXHash; use DXDupe; use Prefix; +use Spot; use Bands; use Keps; use Minimuf; @@ -146,7 +147,7 @@ sub new_channel ; } else { if (my $ref = DXCluster->get_exact($call)) { - my $mess = DXM::msg($lang, 'concluster', $call, $ref->mynode->call); + my $mess = DXM::msg($lang, 'concluster', $call, $ref->mynode->dxchancall); already_conn($conn, $call, $mess); return; } @@ -154,7 +155,7 @@ sub new_channel $user->{lang} = $main::lang if !$user->{lang}; # to autoupdate old systems } else { if (my $ref = DXCluster->get_exact($call)) { - my $mess = DXM::msg($lang, 'concluster', $call, $ref->mynode->call); + my $mess = DXM::msg($lang, 'concluster', $call, $ref->mynode->dxchancall); already_conn($conn, $call, $mess); return; } @@ -206,8 +207,10 @@ sub cease { my $dxchan; - $SIG{'TERM'} = 'IGNORE'; - $SIG{'INT'} = 'IGNORE'; + unless ($is_win) { + $SIG{'TERM'} = 'IGNORE'; + $SIG{'INT'} = 'IGNORE'; + } DXUser::sync; @@ -217,28 +220,21 @@ sub cease dbg('local', "Local::finish error $@") if $@; # disconnect nodes - foreach $dxchan (DXChannel->get_all()) { - next unless $dxchan->is_node; - $dxchan->disconnect unless $dxchan == $DXProt::me; + foreach $dxchan (DXChannel->get_all_nodes) { + $dxchan->disconnect(2) unless $dxchan == $DXProt::me; } - Msg->event_loop(1, 0.05); - Msg->event_loop(1, 0.05); + Msg->event_loop(100, 0.01); # disconnect users - foreach $dxchan (DXChannel->get_all()) { - next if $dxchan->is_node; - $dxchan->disconnect(2) unless $dxchan == $DXProt::me; + foreach $dxchan (DXChannel->get_all_users) { + $dxchan->disconnect; } # disconnect AGW AGWMsg::finish(); - - Msg->event_loop(1, 0.05); - Msg->event_loop(1, 0.05); - Msg->event_loop(1, 0.05); - Msg->event_loop(1, 0.05); - Msg->event_loop(1, 0.05); - Msg->event_loop(1, 0.05); + + # end everything else + Msg->event_loop(100, 0.01); DXUser::finish(); DXDupe::finish(); @@ -393,11 +389,11 @@ AGWrestart(); dbg('err', "load badwords: " . (BadWords::load or "Ok")); # prime some signals +unless ($DB::VERSION) { + $SIG{INT} = $SIG{TERM} = sub { $decease = 1 }; +} + unless ($is_win) { - unless ($DB::VERSION) { - $SIG{INT} = \&cease; - $SIG{TERM} = \&cease; - } $SIG{HUP} = 'IGNORE'; $SIG{CHLD} = sub { $zombies++ };