make isolation work in both directions again?
[spider.git] / perl / DXProt.pm
index e41951da26b4f932be9b8103bb52e75e21adcfcd..7359fdead0d7a85f2c6d51ff4ab36e2a0c147329 100644 (file)
@@ -1605,10 +1605,7 @@ sub process_rcmd_reply
                my $s = $rcmds{$fromnode};
                if ($s) {
                        my $dxchan = DXChannel->get($s->{call});
-                       my $ref = DXChannel->get($user) || $dxchan;
-                       if ($ref->{call} eq $main::mycall) {
-                               $ref = DXChannel->get($main::myalias) || $ref;
-                       }
+                       my $ref = $user eq $tonode ? $dxchan : (DXChannel->get($user) || $dxchan);
                        $ref->send($line) if $ref;
                        delete $rcmds{$fromnode} if !$dxchan;
                } else {
@@ -1757,7 +1754,7 @@ sub send_route
                                $routeit = adjust_hops($self, $line);  # adjust its hop count by node name
                                next unless $routeit;
                        }
-                       $self->send($routeit) if $self->{routefilter} || !$self->{isolate};
+                       $self->send($routeit);
                }
        }
 }
@@ -1773,7 +1770,7 @@ sub broadcast_route
        foreach $dxchan (@dxchan) {
                next if $dxchan == $self;
                next if $dxchan == $me;
-               if ($dxchan->{routefilter} || !$self->{isolate}) {
+               if ($dxchan->{routefilter} || (!$self->{isolate} && !$dxchan->{isolate})) {
                        $dxchan->send_route($generate, @_) 
                } else {
                        dbg('DXPROT: isolated') if isdbg('chanerr');