mirror of
git://scm.dxcluster.org/scm/spider
synced 2024-09-21 07:47:10 +00:00
fix new pc9x midnight rollover bug
This commit is contained in:
parent
6ca2448755
commit
f4c54c5174
2
Changes
2
Changes
@ -1,3 +1,5 @@
|
||||
09Oct07=======================================================================
|
||||
1. Added *VERY* important change to prevent loops on PC9x sentences.
|
||||
06Oct07=======================================================================
|
||||
1. added the possibility of having a motd_ax25 especially for sending to
|
||||
radio connections after a suggestion by Paolo YV1DIG.
|
||||
|
@ -49,7 +49,7 @@ use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restim
|
||||
|
||||
$pc9x_past_age = 62*60; # maximum age in the past of a px9x (a config record might be the only
|
||||
# thing a node might send - once an hour)
|
||||
$pc9x_future_age = 5*60; # maximum age in the future ditto
|
||||
$pc9x_future_age = 2*3600; # maximum age in the future ditto
|
||||
$pc10_dupe_age = 45; # just something to catch duplicate PC10->PC93 conversions
|
||||
$pc92_slug_changes = 60; # slug any changes going outward for this long
|
||||
$last_pc92_slug = 0; # the last time we sent out any delayed add or del PC92s
|
||||
@ -1485,20 +1485,22 @@ sub check_pc9x_t
|
||||
# the id on it is completely unreliable. Besides, only commands
|
||||
# originating on this box will go through this code...
|
||||
if ($parent->call ne $main::mycall) {
|
||||
my $lastid = $parent->lastid || 0;
|
||||
if ($t < $lastid) {
|
||||
if ($t+86400-$lastid > $pc9x_past_age) {
|
||||
dbg("PCPROT: dup id on $t <= $lastid, ignored") if isdbg('chanerr');
|
||||
return;
|
||||
}
|
||||
} elsif ($t == $lastid) {
|
||||
dbg("PCPROT: dup id on $t == $lastid, ignored") if isdbg('chanerr');
|
||||
return;
|
||||
} else {
|
||||
# $t > $lastid, check that the timestamp offered isn't too far away from 'now'
|
||||
if ($t+$main::systime_daystart-$main::systime > $pc9x_future_age ) {
|
||||
dbg("PCPROT: id $t too far in the future, ignored") if isdbg('chanerr');
|
||||
my $lastid = $parent->lastid;
|
||||
if (defined $lastid) {
|
||||
if ($t < $lastid) {
|
||||
if ($t+86400-$lastid > $pc9x_past_age) {
|
||||
dbg("PCPROT: dup id on $t <= lastid $lastid, ignored") if isdbg('chanerr');
|
||||
return;
|
||||
}
|
||||
} elsif ($t == $lastid) {
|
||||
dbg("PCPROT: dup id on $t == lastid $lastid, ignored") if isdbg('chanerr');
|
||||
return;
|
||||
} else {
|
||||
# $t > $lastid, check that the timestamp offered isn't too far away from 'now'
|
||||
if ($t-$lastid > $pc9x_future_age ) {
|
||||
dbg("PCPROT: id $t too far in the future of lastid $lastid, ignored") if isdbg('chanerr');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -286,7 +286,6 @@ sub new
|
||||
$self->{flags} = shift || Route::here(1);
|
||||
$self->{users} = [];
|
||||
$self->{nodes} = [];
|
||||
$self->{lastid} = 0;
|
||||
$self->{PC92C_dxchan} = '';
|
||||
$self->reset_obs; # by definition
|
||||
|
||||
|
@ -11,6 +11,6 @@ use vars qw($version $subversion $build);
|
||||
|
||||
$version = '1.54';
|
||||
$subversion = '0';
|
||||
$build = '164';
|
||||
$build = '165';
|
||||
|
||||
1;
|
||||
|
40
perl/test_lastid.pl
Executable file
40
perl/test_lastid.pl
Executable file
@ -0,0 +1,40 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
my $pc9x_past_age = 3600;
|
||||
my $pc9x_future_age = 3600*2;
|
||||
my $lastid;
|
||||
|
||||
try($_) for qw(85955 85968 518 85967 519 85968 520 85969), @ARGV;
|
||||
|
||||
exit 0;
|
||||
|
||||
sub try
|
||||
{
|
||||
my $t = shift;
|
||||
|
||||
print "$t : ";
|
||||
|
||||
if (defined $lastid) {
|
||||
if ($t < $lastid) {
|
||||
my $wt;
|
||||
if (($wt = $t+86400-$lastid) > $pc9x_past_age) {
|
||||
print "PCPROT: dup id on $t + 86400 - $lastid ($wt) > $pc9x_past_age, ignored\n";
|
||||
return;
|
||||
}
|
||||
print "wt = $wt ";
|
||||
} elsif ($t == $lastid) {
|
||||
print "PCPROT: dup id on $t == $lastid, ignored\n";
|
||||
return;
|
||||
} elsif ($t > $lastid) {
|
||||
if ($t - $lastid > $pc9x_future_age) {
|
||||
print "PCPROT: dup id $t too far in future on $lastid\n";
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print "$lastid Ok\n";
|
||||
$lastid = $t;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user