$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');
+ dbg("PCPROT: PC19 from $self->{call} trying to alter locally connected $ncall, ignored!") if isdbg('chanerr');
$parent = undef;
}
if ($parent) {
# route the pc19 - this will cause 'stuttering PC19s' for a while
$self->route_pc19(@nrout) if @nrout ;
$parent = Route::Node::get($ncall);
+ unless ($parent) {
+ dbg("PCPROT: lost $ncall after sending PC19 for it?");
+ return;
+ }
} else {
return;
}
my $flags = Route::here($here)|Route::conf($conf);
if ($r) {
+ my $au = $r->addparent($parent);
if ($r->flags != $flags) {
$r->flags($flags);
- push @rout, $r;
+ $au = $r;
}
- $r->addparent($parent);
+ push @rout, $r if $au;
} else {
push @rout, $parent->add_user($call, $flags);
}
if ($pcno == 41) { # user info
my $call = $field[1];
- if (eph_dup($line, $eph_info_restime)) {
+ my $l = $line;
+ $l =~ s/[\x00-\x20\x7f-\xff]+//g; # remove all funny characters and spaces for dup checking
+ if (eph_dup($l, $eph_info_restime)) {
dbg("PCPROT: dupe") if isdbg('chanerr');
return;
}
$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