X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtHandle.pm;h=b83da41784b10ebb4f4d76bd13c25b34d30dfc3b;hb=ac14c6983861c08b8a2842af46e67407600f8065;hp=b8c31542285b4c9f45c985795b1d3a1076a8e6b3;hpb=fd0a34c34ad4112ee21e0730f7307498ff437e18;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index b8c31542..b83da417 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -1553,8 +1553,13 @@ sub handle_92 # 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)) { - dbg("PCPROT: no previous C or A for this external node received, ignored") if isdbg('chanerr'); - return; + if ($is_extnode && $oparent) { + @radd = _add_thingy($oparent, $ent[0]); + $parent = $radd[0]; + } else { + dbg("PCPROT: no previous C or A for this external node received, ignored") if isdbg('chanerr'); + return; + } } $parent = check_pc9x_t($call, $t, 92) || return; $parent->via_pc92(1); @@ -1594,10 +1599,12 @@ sub handle_92 # we only reset obscounts on config records $oparent->reset_obs; - dbg("ROUTE: reset obscount on $pcall now " . $oparent->obscount) if isdbg('route'); + $oparent->PC92C_dxchan($self->{call}) unless $self->{call} eq $oparent->call; + dbg("ROUTE: reset obscount on $pcall now " . $oparent->obscount) if isdbg('obscount'); if ($oparent != $parent) { $parent->reset_obs; - dbg("ROUTE: reset obscount on $parent->{call} now " . $parent->obscount) if isdbg('route'); + $parent->PC92C_dxchan($self->{call}) unless $self->{call} eq $parent->call; + dbg("ROUTE: reset obscount on $parent->{call} now " . $parent->obscount) if isdbg('obscount'); } # @@ -1759,9 +1766,7 @@ sub handle_default my $line = shift; my $origin = shift; - if (eph_dup($line)) { - dbg("PCPROT: Ephemeral dup, dropped") if isdbg('chanerr'); - } else { + unless (eph_dup($line)) { if ($pcno >= 90) { my $pcall = $_[1]; unless (is_callsign($pcall)) {