- if (my $nl = $pc19list{$ncall}) {
-
- # this is a new (remembered) node, now attach it to me if it isn't in filtered
- # and we haven't disallowed it
- my $user = DXUser->get_current($ncall);
- if (!$user) {
- $user = DXUser->new($ncall);
- $user->sort('A');
- $user->priv(1); # I have relented and defaulted nodes
- $user->lockout(1);
- $user->homenode($ncall);
- $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
- if ($self->in_filter_route($new)) {
- my @nrout;
- for (@$nl) {
- $parent = Route::Node::get($_->[0]);
- $dxchan = $parent->dxchan if $parent;
- if ($dxchan && $dxchan ne $self) {
- dbg("PCPROT: PC16 from $self->{call} trying to alter locally connected $ncall, ignored!") if isdbg('chanerr');
- $parent = undef;
- }
- if ($parent) {
- my $r = $parent->add($ncall, $_->[1], $_->[2]);
- push @nrout, $r unless @nrout;
- }
- }
- $user->wantroutepc19(1) unless defined $wantpc19; # for now we work on the basis that pc16 = real route
- $user->lastin($main::systime) unless DXChannel->get($ncall);
- $user->put;
-
- # route the pc19 - this will cause 'stuttering PC19s' for a while
- $self->route_pc19(@nrout) if @nrout ;
- $parent = Route::Node::get($ncall);
- } else {
- return;
- }
- }
- } else {
- dbg("PCPROT: Node $ncall not in config") if isdbg('chanerr');
- return;
- }
- } else {
-
- $dxchan = $parent->dxchan;
- if ($dxchan && $dxchan ne $self) {
- dbg("PCPROT: PC16 from $self->{call} trying to alter locally connected $ncall, ignored!") if isdbg('chanerr');
- return;
- }
-
- # input filter if required
- return unless $self->in_filter_route($parent);