my $node;
my @rawintcalls = map { $_->nodes } @localnodes if @localnodes;
my @intcalls;
- for $node (@rawintcalls) {
- push @intcalls, $node unless grep $node eq $_, @intcalls;
+ foreach $node (@rawintcalls) {
+ push @intcalls, $node if grep $_ && $node != $_, @intcalls;
}
my $ref = Route::Node::get($self->{call});
my @rnodes = $ref->nodes;
- for $node (@intcalls) {
- push @remotenodes, Route::Node::get($node) unless grep $node eq $_, @rnodes, @remotenodes;
+ foreach $node (@intcalls) {
+ push @remotenodes, Route::Node::get($node) if grep $_ && $node != $_, @rnodes, @remotenodes;
}
$self->send_route($main::mycall, \&pc19, scalar(@remotenodes), @remotenodes);
}
for (; @_ && $no; $no--) {
my $r = shift;
+ # don't send messages with $self's call in back to them
+ if ($r->call eq $self->{call}) {
+ dbg("PCPROT: trying to send $self->{call} back itself") if isdbg('chanerr');
+ next;
+ }
+
if (!$self->{isolate} && $self->{routefilter}) {
$filter = undef;
if ($r) {
next if $origin eq $dxchan->{call}; # don't route some from this call back again.
next unless $dxchan->isa('DXProt');
next if $dxchan->{do_pc9x};
- next if ($generate == \&pc16 || $generate==\&pc17) && !$dxchan->user->wantsendpc16;
-
+ if ($generate == \&pc16 || $generate==\&pc17) {
+ next unless $dxchan->user->wantsendpc16;
+ }
$dxchan->send_route($origin, $generate, @_);
}
}