fixed isolation for routes finally?
[spider.git] / perl / DXProt.pm
index 8ee77084fd0a339f70f05912cb5b75e129e71b95..846a6c9245f3d0cdc45f8c3f08ea9e0a6e8e97ee 100644 (file)
@@ -1726,6 +1726,8 @@ sub disconnect
        my $pc39flag = shift;
        my $call = $self->call;
 
+       return if $self->{disconnecting}++;
+       
        unless ($pc39flag && $pc39flag == 1) {
                $self->send_now("D", DXProt::pc39($main::mycall, $self->msg('disc1', "System Op")));
        }
@@ -1787,7 +1789,7 @@ sub send_route
        for (; @_ && $no; $no--) {
                my $r = shift;
                
-               if ($self->{routefilter}) {
+               if (!$self->{isolate} && $self->{routefilter}) {
                        $filter = undef;
                        if ($r) {
                                ($filter, $hops) = $self->{routefilter}->it($self->{call}, $self->{dxcc}, $self->{itu}, $self->{cq}, $r->call, $r->dxcc, $r->itu, $r->cq);
@@ -1800,7 +1802,7 @@ sub send_route
                                dbg("was sent a null value") if isdbg('chanerr');
                        }
                } else {
-                       push @rin, $r;
+                       push @rin, $r unless $self->{isolate} && $r->call ne $main::mycall;
                }
        }
        if (@rin) {
@@ -1831,7 +1833,7 @@ sub broadcast_route
                if ($dxchan->{routefilter}) {
                        $dxchan->send_route($generate, @_);
                } else {
-                       $dxchan->send_route($generate, @_) unless $self->{isolate} || $dxchan->{isolate};
+                       $dxchan->send_route($generate, @_) unless $self->{isolate};
                }
        }
 }