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 {
$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);
}
}
}
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');