X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=66d29f2fc6d99a982e915c57ec56a0cc86d7b857;hb=ef01f110c32faac2ac21f462b87bf729b2db4626;hp=3767145ca4277463ca60fe172db9b695f57b8320;hpb=877fab7416e9545aeae5b9880246262bc92be650;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 3767145c..66d29f2f 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -651,23 +651,27 @@ sub normal if ($r) { my $ar; if ($call ne $parent->call) { - $ar = $parent->add($r); - push @rout, $ar if $ar; + if ($self->in_filter_route($r)) { + $ar = $parent->add($call, $ver, $flags); + push @rout, $ar if $ar; + } else { + next; + } } if ($r->version ne $ver || $r->flags != $flags) { $r->version($ver); - $r->flags(Route::here($here)|Route::conf($conf)); + $r->flags($flags); push @rout, $r unless $ar; } } else { next if $call eq $main::mycall || $call eq $self->{call}; - my $new = $parent->new($call, $ver, Route::here($here)|Route::conf($conf)); + my $new = Route->new($call); # throw away if ($self->in_filter_route($new)) { - $parent->add($new); - push @rout, $new; + my $r = $parent->add($call, $ver, $flags); + push @rout, $r; } else { - $new->del($parent); + next; } } @@ -787,7 +791,7 @@ sub normal $ref->here($field[2]) if $ref; # input filter if required - return unless $self->in_filter_route($ref); + return unless $self->in_filter_route($ref || Route::new($call)); $self->route_pc24($ref, $field[3]) if $ref && !eph_dup($line); return; @@ -927,7 +931,7 @@ sub normal } $user->lastoper($main::systime); # to cut down on excessive for/opers being generated $user->put; - my $ref = Route::get($call); + my $ref = Route::get($call) || Route->new($call); # input filter if required return unless $self->in_filter_route($ref); @@ -1792,7 +1796,7 @@ sub broadcast_route foreach $dxchan (@dxchan) { next if $dxchan == $self; next if $dxchan == $me; - if ($self->{routefilter} || !$self->{isolate}) { + if ($dxchan->{routefilter} || !$self->{isolate}) { $dxchan->send_route($generate, @_) } else { dbg('DXPROT: isolated') if isdbg('chanerr');