sort out the cluster table further
[spider.git] / perl / DXProt.pm
index 516779b67458791266a7d00bd25453d30732b1ad..b85f2391d90f0f084d45af53853e02616cd93d58 100644 (file)
@@ -1148,7 +1148,6 @@ sub finish
 {
        my $self = shift;
        my $call = $self->call;
-       my $conn = shift;
        my $ref = DXCluster->get_exact($call);
        
        # unbusy and stop and outgoing mail
@@ -1156,11 +1155,12 @@ sub finish
        $mref->stop_msg($call) if $mref;
        
        # broadcast to all other nodes that all the nodes connected to via me are gone
-       my @gonenodes = map { $_->dxchan == $self ? $_ : () } DXNode::get_all();
+       my @gonenodes = grep { $_->dxchan != $self && $_->dxchan != $me } DXNode::get_all();
        my $node;
        
-       foreach $node (@gonenodes) {
+       foreach $node (DXNode::get_all) {
                next if $node->call eq $call;
+               next if $node->call eq $main::mycall;
                broadcast_ak1a(pc21($node->call, 'Gone') , $self) unless $self->{isolate}; 
                $node->del();
        }
@@ -1514,6 +1514,8 @@ sub broadcast_ak1a
        # send it if it isn't the except list and isn't isolated and still has a hop count
        foreach $dxchan (@dxchan) {
                next if grep $dxchan == $_, @except;
+               next if $dxchan == $me;
+               
                my $routeit = adjust_hops($dxchan, $s);      # adjust its hop count by node name
                $dxchan->send($routeit) unless $dxchan->{isolate} || !$routeit;
        }
@@ -1531,6 +1533,8 @@ sub broadcast_all_ak1a
        # send it if it isn't the except list and isn't isolated and still has a hop count
        foreach $dxchan (@dxchan) {
                next if grep $dxchan == $_, @except;
+               next if $dxchan == $me;
+
                my $routeit = adjust_hops($dxchan, $s);      # adjust its hop count by node name
                $dxchan->send($routeit);
        }
@@ -1565,6 +1569,7 @@ sub broadcast_list
        
        foreach $dxchan (@_) {
                my $filter = 1;
+               next if $dxchan == $me;
                
                if ($sort eq 'dx') {
                    next unless $dxchan->{dx};