projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
change sort to use to field
[spider.git]
/
perl
/
DXProt.pm
diff --git
a/perl/DXProt.pm
b/perl/DXProt.pm
index 3767145ca4277463ca60fe172db9b695f57b8320..f72fe8903a37bbe5c1c17a201b99eb936e69b49c 100644
(file)
--- a/
perl/DXProt.pm
+++ b/
perl/DXProt.pm
@@
-651,23
+651,27
@@
sub normal
if ($r) {
my $ar;
if ($call ne $parent->call) {
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);
}
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};
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)) {
if ($self->in_filter_route($new)) {
-
$parent->add($new
);
- push @rout, $
new
;
+
my $r = $parent->add($call, $ver, $flags
);
+ push @rout, $
r
;
} else {
} else {
-
$new->del($parent)
;
+
next
;
}
}
}
}
@@
-785,6
+789,7
@@
sub normal
$ref->here($field[2]) if $ref;
$ref = Route::User::get($call);
$ref->here($field[2]) if $ref;
$ref->here($field[2]) if $ref;
$ref = Route::User::get($call);
$ref->here($field[2]) if $ref;
+ $ref ||= Route->new($call);
# input filter if required
return unless $self->in_filter_route($ref);
# input filter if required
return unless $self->in_filter_route($ref);
@@
-927,7
+932,7
@@
sub normal
}
$user->lastoper($main::systime); # to cut down on excessive for/opers being generated
$user->put;
}
$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);
# input filter if required
return unless $self->in_filter_route($ref);
@@
-1483,7
+1488,7
@@
sub route
# always send it down the local interface if available
my $dxchan = DXChannel->get($call);
unless ($dxchan) {
# always send it down the local interface if available
my $dxchan = DXChannel->get($call);
unless ($dxchan) {
- my $cl = Route::
Node::
get($call);
+ my $cl = Route::get($call);
$dxchan = $cl->dxchan if $cl;
if (ref $dxchan) {
if (ref $self && $dxchan eq $self) {
$dxchan = $cl->dxchan if $cl;
if (ref $dxchan) {
if (ref $self && $dxchan eq $self) {
@@
-1792,7
+1797,7
@@
sub broadcast_route
foreach $dxchan (@dxchan) {
next if $dxchan == $self;
next if $dxchan == $me;
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');
$dxchan->send_route($generate, @_)
} else {
dbg('DXPROT: isolated') if isdbg('chanerr');