fix WWV brodacasting and filtering
authorminima <minima>
Mon, 5 Sep 2005 21:24:07 +0000 (21:24 +0000)
committerminima <minima>
Mon, 5 Sep 2005 21:24:07 +0000 (21:24 +0000)
Changes
perl/DXProt.pm
perl/DXUser.pm
perl/Geomag.pm

diff --git a/Changes b/Changes
index 770879b7ea60bcc2a067eab516e72eb507c4f105..a26d9141edec5c24a1efb231bd82b514a54e54ac 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,8 @@
+01Sep05=======================================================================
+1. Change the logic of propagating WWV broadcasts. Now all non-input filtered
+PC23s will be sent on. Previously only the first successful new WWV was 
+rebroadcast.
+2. fix the problem with by_dxcc and origin_dxcc not working on WWV.
 29Aug05=======================================================================
 1. try something else to resolve/prevent more of these spot dupes. It appears
 that there is software out there chopping off variable amounts from the ends
index 5bf0d1f935f367fe3dfdc110b3986706bc90a0be..a7ef556201d09a3dae888c1442e3d50f3d4aa415 100644 (file)
@@ -1236,21 +1236,22 @@ sub handle_23
        }
 
        # global wwv filtering on INPUT
-       my @dxcc = ((Prefix::cty_data($_[6]))[0..2], (Prefix::cty_data($_[7]))[0..2]);
+       my @dxcc = ((Prefix::cty_data($_[7]))[0..2], (Prefix::cty_data($_[8]))[0..2]);
        if ($self->{inwwvfilter}) {
                my ($filter, $hops) = $self->{inwwvfilter}->it(@_[7,8], $origin, @dxcc);
                unless ($filter) {
-                       dbg("PCPROT: Rejected by input spot filter") if isdbg('chanerr');
+                       dbg("PCPROT: Rejected by input wwv filter") if isdbg('chanerr');
                        return;
                }
        }
-       if (Geomag::dup($d,$sfi,$k,$i,$_[6])) {
+       if (Geomag::dup($d,$sfi,$k,$i,$_[6],$_[7])) {
                dbg("PCPROT: Dup WWV Spot ignored\n") if isdbg('chanerr');
                return;
        }
        $_[7] =~ s/-\d+$//o;            # remove spotter's ssid
                
-       my $wwv = Geomag::update($d, $_[2], $sfi, $k, $i, @_[6..8], $r);
+       # note this only takes the first one it gets
+       Geomag::update($d, $_[2], $sfi, $k, $i, @_[6..8], $r);
 
        my $rep;
        eval {
index 8b856b13736834dad51505141621417dc7fcc7f0..136ddee13deed71e2b849efe0c7100ae2f96fdca 100644 (file)
@@ -491,7 +491,7 @@ print "There are $count user records and $err errors\n";
                        my $ref = decode($val);
                        if ($ref) {
                                my $t = $ref->{lastin} || 0;
-                               if ($main::systime > $t + $tooold) {
+                               if ($ref->{sort} eq 'U' && !$ref->{priv} && $main::systime > $t + $tooold) {
                                        unless ($ref->{lat} && $ref->{long} || $ref->{qth} || $ref->{qra}) {
                                                eval {$dbm->del($key)};
                                                dbg(carp("Export Error2: $key\t$val\n$@")) if $@;
index b1985f0541509f8dd273d8be66243127e9e58a6b..022c4519e6c7928f72f1ff616d632a16288b37d6 100644 (file)
@@ -268,12 +268,12 @@ sub readfile
 # enter the spot for dup checking and return true if it is already a dup
 sub dup
 {
-       my ($d, $sfi, $k, $a, $text) = @_; 
+       my ($d, $sfi, $k, $a, $text, $call) = @_; 
 
        # dump if too old
        return 2 if $d < $main::systime - $dupage;
  
-       my $dupkey = "W$d|$sfi|$k|$a";
+       my $dupkey = "W$d|$sfi|$k|$a|$call";
        return DXDupe::check($dupkey, $main::systime+$dupage);
 }