X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtHandle.pm;h=f28de6d065cbae54941df6703de4e9ed55a26248;hb=09cf2338daaf67c2844b5d0894b78636c9ab6102;hp=3e4d3134d40ba532bec9138fab4503679ffe2f30;hpb=d7a3d8da34eeb5ddb1457e90ea16c0ac9d93967a;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index 3e4d3134..f28de6d0 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -273,7 +273,7 @@ sub handle_11 } # local processing - if (defined *Local::spot) { + if (defined &Local::spot) { my $r; eval { $r = Local::spot($self, @spot); @@ -360,7 +360,7 @@ sub handle_12 } # local processing - if (defined *Local::ann) { + if (defined &Local::ann) { my $r; eval { $r = Local::ann($self, $line, @_[1..6]); @@ -947,7 +947,7 @@ sub handle_23 # note this only takes the first one it gets Geomag::update($d, $_[2], $sfi, $k, $i, @_[6..8], $r); - if (defined *Local::wwv) { + if (defined &Local::wwv) { my $rep; eval { $rep = Local::wwv($self, $_[1], $_[2], $sfi, $k, $i, @_[6..8], $r); @@ -1318,7 +1318,7 @@ sub handle_73 my $wcy = WCY::update($d, @_[2..12]); - if (defined *Local::wcy) { + if (defined &Local::wcy) { my $rep; eval { $rep = Local::wcy($self, @_[1..12]); @@ -1536,6 +1536,13 @@ sub check_pc9x_t } elsif ($t == $lastid) { dbg("PCPROT: dup id on $t == lastid $lastid, ignored") if isdbg('chanerr') || isdbg('pc92dedupe'); return undef; + } else { + # check that if we have a low number in lastid that yesterday's numbers + # (likely in the 85000+ area) don't override them, thus causing flip flopping + if ($lastid+86400-$t < $pc9x_past_age) { + dbg("PCPROT: dup id on $t in yesterday, lastid $lastid, ignored") if isdbg('chanerr') || isdbg('pc92dedupe'); + return undef; + } } } } @@ -1887,6 +1894,12 @@ sub handle_93 return; } + # ignore PC93 coming in from outside this node with a target of local + if ($to eq 'LOCAL' && $self != $main::me) { + dbg("PCPROT: incoming LOCAL chat not from local node, ignored") if isdbg('chanerr'); + return; + } + # if it is routeable then then treat it like a talk my $ref = Route::get($to); if ($ref) { @@ -1934,7 +1947,9 @@ sub handle_93 # chat messages to non-pc9x nodes $self->send_chat(1, pc12($from, $text, undef, $to, undef, $pcall), $from, '*', $text, $to, $pcall, '0'); } - $self->broadcast_route_pc9x($pcall, undef, $line, 0); + + # broadcast this chat sentence everywhere unless it is targetted to 'LOCAL' + $self->broadcast_route_pc9x($pcall, undef, $line, 0) unless $to eq 'LOCAL' || $via eq 'LOCAL'; } # if get here then rebroadcast the thing with its Hop count decremented (if