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")));
}
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);
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) {
my $dxchan;
my $line;
- foreach $dxchan (@dxchan) {
- next if $dxchan == $self;
- next if $dxchan == $me;
- if ($dxchan->{routefilter}) {
+ unless ($self->{isolate}) {
+ foreach $dxchan (@dxchan) {
+ next if $dxchan == $self;
+ next if $dxchan == $me;
$dxchan->send_route($generate, @_);
- } else {
- $dxchan->send_route($generate, @_) unless $self->{isolate} || $dxchan->{isolate};
}
}
}