X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=bc753c3d784e6b053a5d67d147a8807d7ef6f855;hb=64d7fcd04e89143f23455c5aae3cc4e410700870;hp=e4e0aa49db77409adf7ee3cb097dffbf492f2ec7;hpb=aa63cbca3fa8ba421d356f7e954a69e014204524;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index e4e0aa49..bc753c3d 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -823,13 +823,13 @@ sub send_local_config 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); } @@ -1238,6 +1238,12 @@ sub send_route 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) { @@ -1314,8 +1320,9 @@ sub broadcast_route_nopc9x 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, @_); } }