}
# local processing
- if (defined *Local::spot) {
+ if (defined &Local::spot) {
my $r;
eval {
$r = Local::spot($self, @spot);
}
# local processing
- if (defined *Local::ann) {
+ if (defined &Local::ann) {
my $r;
eval {
$r = Local::ann($self, $line, @_[1..6]);
# 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);
my $wcy = WCY::update($d, @_[2..12]);
- if (defined *Local::wcy) {
+ if (defined &Local::wcy) {
my $rep;
eval {
$rep = Local::wcy($self, @_[1..12]);
} 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;
+ }
}
}
}
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) {
# chat messages to non-pc9x nodes
$self->send_chat(1, pc12($from, $text, undef, $to, undef, $pcall), $from, '*', $text, $to, $pcall, '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';
}