*** empty log message ***
[spider.git] / perl / DXProt.pm
index ebc23561dae10ac0c7cf4760836870b96b01cbd9..5211b7aa622ec6553084b3371925bd0919d8405a 100644 (file)
@@ -28,13 +28,14 @@ use Local;
 use Carp;
 
 use strict;
-use vars qw($me $pc11_max_age $pc11_dup_age $pc23_dup_age 
-                       %spotdup %wwvdup $last_hour %pings %rcmds 
+use vars qw($me $pc11_max_age $pc23_max_age $pc11_dup_age $pc23_dup_age
+                       %spotdup %wwvdup $last_hour %pings %rcmds
                        %nodehops @baddx $baddxfn $pc12_dup_age
                        %anndup $allowzero);
 
 $me = undef;                                   # the channel id for this cluster
 $pc11_max_age = 1*3600;                        # the maximum age for an incoming 'real-time' pc11
+$pc23_max_age = 1*3600;                        # the maximum age for an incoming 'real-time' pc23
 $pc11_dup_age = 24*3600;               # the maximum time to keep the spot dup list for
 $pc23_dup_age = 24*3600;               # the maximum time to keep the wwv dup list for
 $pc12_dup_age = 24*3600;               # the maximum time to keep the ann dup list for
@@ -209,7 +210,7 @@ sub normal
                        
                        # store it away
                        my $spotter = $field[6];
-                       $spotter =~ s/-\d+$//o; # strip off the ssid from the spotter
+                       $spotter =~ s/-[\@\d]+$//o;     # strip off the ssid from the spotter
                        
                        # do some de-duping
                        my $freq = $field[1] - 0;
@@ -512,7 +513,7 @@ sub normal
                                dbg('chan', "Dup WWV Spot ignored\n");
                                return;
                        }
-                       if ($d > $main::systime + 900 || $field[2] < 0 || $field[2] > 23) {
+                       if ($d < $main::systime - $pc23_max_age || $d > $main::systime + 900 || $field[2] < 0 || $field[2] > 23) {
                                dbg('chan', "WWV Date ($field[1] $field[2]) out of range");
                                return;
                        }
@@ -811,7 +812,13 @@ sub send_dx_spot
        # taking into account filtering and so on
        foreach $dxchan (@dxchan) {
                my $routeit;
-               my ($filter, $hops) = Filter::it($dxchan->{spotfilter}, @_, $self->{call} ) if $dxchan->{spotfilter};
+               my ($filter, $hops);
+
+               if ($dxchan->{spotfilter}) {
+                   ($filter, $hops) = Filter::it($dxchan->{spotfilter}, @_, $self->{call} );
+                       next unless $filter;
+               }
+               
                if ($dxchan->is_ak1a) {
                        next if $dxchan == $self;
                        if ($hops) {