RouteDB::update($_[6], $self->{call});
# RouteDB::update($to, $_[6]);
- # convert this to a PC93 and process it as such
- $self->normal(pc93($to, $from, $via, $_[3], $_[6]));
+ # convert this to a PC93, coming from mycall with origin set and process it as such
+ $main::me->normal(pc93($to, $from, $via, $_[3], $_[6]));
}
# DX Spot handling
dbg("PCPROT: $call looped back onto $main::mycall, ignored") if isdbg('chanerr');
return;
}
+ # this is only accepted from my "self".
+ # this also kills configs from PC92 nodes with external PC19 nodes that are also
+ # locally connected. Local nodes always take precedence.
+ if (DXChannel::get($call) && $call ne $self->{call}) {
+ dbg("PCPROT: locally connected node $call from other another node $self->{call}, ignored") if isdbg('chanerr');
+ return;
+ }
if ($is_extnode) {
- # this is only accepted from my "self"
- if (DXChannel::get($call) && $call ne $self->{call}) {
- dbg("PCPROT: locally connected node config for $call from other another node $self->{call}, ignored") if isdbg('chanerr');
- return;
- }
# reparent to external node (note that we must have received a 'C' or 'A' record
# from the true parent node for this external before we get one for the this node
unless ($parent = Route::Node::get($call)) {
return;
}
+ # remember that we are converting PC10->PC93
unless ($self->{do_pc9x}) {
dbg("PCPROT: PC9x come in from non-PC9x node, ignored") if isdbg('chanerr');
return;
my $dxchan;
$dxchan = DXChannel::get($main::myalias) if $to eq $main::mycall;
$dxchan = DXChannel::get($to) unless $dxchan;
- if ($dxchan && $dxchan->is_user) {
- $dxchan->talk($from, $to, $via, $text, $onode);
- return;
+ # check it...
+ if ($dxchan) {
+ if (ref $dxchan && $dxchan->isa('DXChannel')) {
+ if ($dxchan->is_user) {
+ $dxchan->talk($from, $to, $via, $text, $onode);
+ return;
+ }
+ } else {
+ dbg("ERROR: $to -> $dxchan is not a DXChannel! (local talk)");
+ }
}
# convert to PC10 talks where appropriate
if ($ref) {
# just go for the "best" one for now (rather than broadcast)
$dxchan = $ref->dxchan;
-# my @dxchan = $ref->alldxchan;
-# for $dxchan (@dxchan) {
+
+ # check it...
+ if (ref $dxchan && $dxchan->isa('DXChannel')) {
if ($dxchan->{do_pc9x}) {
$dxchan->send($line);
} else {
$dxchan->talk($from, $to, $via, $text, $onode);
}
-# }
+ } else {
+ dbg("ERROR: $to -> $dxchan is not a DXChannel! (convert to pc10)");
+ }
return;
}