+21Oct02=======================================================================
+1. Fix msg aging.
+2. make the default pinginterval and obscount variable (set/var
+$DXProt::pingint and $DXProt::obscount)
20Oct02=======================================================================
1. remove dupe check on local sysop announces
2. fix format errors on sh/muf for 5.8.0
Tell the system that the call(s) are to be treated as AK1A cluster and
fed PC Protocol rather normal user commands.
-=== 8^SET/OBSCOUNT <count> <nodecall>^Set the 'pump-up' obscelence counter
+=== 8^SET/OBSCOUNT <count> <call>^Set the 'pump-up' obscelence PING counter
From 1.35 onwards neighbouring nodes are pinged at regular intervals (see
SET/PINGINTERVAL), usually 300 seconds or 5 minutes. There is a 'pump-up'
counter which is decremented on every outgoing ping and then reset to
$self->{'read'} = shift;
$self->{rrreq} = shift;
$self->{delete} = shift;
- $self->{deletetime} = shift;
+ $self->{deletetime} = shift || $self->{delete} ? 0 : ($self->{t} + $maxage);
$self->{gotit} = [];
# $self->{lastt} = $main::systime;
$self->{lines} = [];
# clean the message queue
clean_old() if $main::systime - $last_clean > 3600 ;
+
+ # actual remove all the 'deleted' messages in one hit.
+ # this has to be delayed until here otherwise it only does one at
+ # a time because @msg is rewritten everytime del_msg is called.
+ my @del = grep {!$_->{tonode} && $_->{delete} && $_->{deletetime} < $main::systime} @msg;
+ for (@del) {
+ $_->del_msg;
+ }
+
$last_clean = $main::systime;
return;
}
my $rr = $ref->{rrreq} ? '1' : '0';
my $priv = $ref->{private} ? '1': '0';
my $del = $ref->{delete} ? '1' : '0';
- my $delt = $ref->{deletetime} || '0';
+ my $delt = $ref->{deletetime} || $ref->{t} + $maxage;
print $fh "=== $ref->{msgno}^$ref->{to}^$ref->{from}^$ref->{t}^$priv^$ref->{subject}^$ref->{origin}^$ref->{'read'}^$rr^$del^$delt\n";
print $fh "=== ", join('^', @{$ref->{gotit}}), "\n";
my $line;
}
}
- # actual remove all the 'deleted' messages in one hit.
- # this has to be delayed until here otherwise it only does one at
- # a time because @msg is rewritten everytime del_msg is called.
- my @del = grep {!$_->{tonode} && $_->{delete} && $_->{deletetime} < $main::systime} @msg;
- for (@del) {
- $_->del_msg;
- }
}
# delete a message
# mark old messages for deletion
foreach $ref (@msg) {
- if (ref($ref) && !$ref->{keep} && $ref->{t} < $main::systime - $maxage) {
+ if (ref($ref) && !$ref->{keep} && $ref->{deletetime} < $main::systime) {
# this is for IMMEDIATE destruction
$ref->{delete}++;
use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restime $eph_pc34_restime
$last_hour $last10 %eph %pings %rcmds $ann_to_talk
+ $pingint $obscount
%nodehops $baddx $badspotter $badnode $censorpc $rspfcheck
$allowzero $decode_dk0wcy $send_opernam @checklist);
$eph_restime = 180;
$eph_info_restime = 60*60;
$eph_pc34_restime = 30;
+$pingint = 5*60;
+$obscount = 2;
@checklist =
(
# ping neighbour node stuff
my $ping = $user->pingint;
- $ping = 5*60 unless defined $ping;
+ $ping = $pingint unless defined $ping;
$self->{pingint} = $ping;
- $self->{nopings} = $user->nopings || 2;
+ $self->{nopings} = $user->nopings || $obscount;
$self->{pingtime} = [ ];
$self->{pingave} = 999;
$self->{metric} ||= 100;
$dd->Terse(1);
$dd->Quotekeys(0);
$value = $dd->Dumpxs;
+ $value =~ s/([\r\n\t])/sprintf("%%%02X", ord($1))/eg;
}
$prompt = sprintf "%15s: %s", $prompt, $value;
return ($priv, $prompt);