# if there is a parent, proceed, otherwise if there is a latent PC19 in the PC19list,
# fix it up in the routing tables and issue it forth before the PC16
unless ($parent) {
- if (my ($nl = $pc19list{$ncall}) && @field > 2) {
+ my $nl = $pc19list{$ncall};
+
+ if ($nl && @field > 3) { # 3 because of the hop count!
# this is a new (remembered) node, now attach it to me if it isn't in filtered
# and we haven't disallowed it
$user->node($ncall);
}
- delete $pc19list{$ncall}; # whatever happens - it goes
-
my $wantpc19 = $user->wantroutepc19;
if ($wantpc19 || !defined $wantpc19) {
my $new = Route->new($ncall); # throw away
} else {
return;
}
+ delete $pc19list{$ncall};
}
} else {
dbg("PCPROT: Node $ncall not in config") if isdbg('chanerr');
my $flags = Route::here($here)|Route::conf($conf);
if ($r) {
+ my @add;
+ push @add, $r->addparent($parent);
if ($r->flags != $flags) {
$r->flags($flags);
- push @rout, $r;
+ push @add, $r unless @add;
}
- $r->addparent($parent);
+ push @rout, @add;
} else {
push @rout, $parent->add_user($call, $flags);
}
my $new = Route->new($call); # throw away
if ($self->in_filter_route($new)) {
my $ar = $parent->add($call, $ver, $flags);
+ $user->wantroutepc19(1) unless defined $user->wantroutepc19;
push @rout, $ar if $ar;
} else {
next;
$self->send_now("D", DXProt::pc39($main::mycall, $self->msg('disc1', "System Op")));
}
- # get rid of any PC16/17/19/21s
- eph_del_regex("^PC(?:1[679]|21).*$call");
+ # get rid of any PC16/17/19
+ eph_del_regex("^PC1[679]*$call");
# do routing stuff, remove me from routing table
my $node = Route::Node::get($call);
# and all my ephemera as well
for (@rout) {
my $c = $_->call;
- eph_del_regex("^PC(?:1[679]|21).*$c");
+ eph_del_regex("^PC1[679].*$c");
}
}
}
# and the ephemera
- eph_del_regex("^PC(?:1[679]|21).*$k");
+ eph_del_regex("^PC1[679].*$k");
}
# unbusy and stop and outgoing mail