added better anti spot-sucking
authorminima <minima>
Sun, 27 Feb 2005 15:19:32 +0000 (15:19 +0000)
committerminima <minima>
Sun, 27 Feb 2005 15:19:32 +0000 (15:19 +0000)
Changes
perl/Spot.pm

diff --git a/Changes b/Changes
index 9d2608f3f177e62a5f779f72df1b8cab9389c624..eb912b1cc821133225021a1240366d48d7c815a4 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,6 @@
+27Feb05=======================================================================
+1. fix duping on bad spot suckers that copy the prefix that is put at the end
+of the comment section by AR-C nodes becoming the whole comment. 
 26Feb05=======================================================================
 1. Added show/grayline command from Steve K9AN. This is also aliased to
 show/greyline :-)
index fee2c15b0af48cc32acadc3aee05888f339882e5..a7b2f76e6661943c2ba98736eb6af6736217e79c 100644 (file)
@@ -333,13 +333,32 @@ sub dup
 
        chomp $text;
        $text =~ s/\%([0-9A-F][0-9A-F])/chr(hex($1))/eg;
-       $text = unpad($text);
+       $text = uc unpad($text);
        $text = substr($text, 0, $duplth) if length $text > $duplth; 
        $text = pack("C*", map {$_ & 127} unpack("C*", $text));
-       $text =~ s/[^a-zA-Z0-9]//g;
-       my $ldupkey = "X$freq|$call|$by" . uc $text;
+       my $ldupkey = "X$freq|$call|$by|";
        my $t = DXDupe::find($ldupkey);
-       return 1 if $t && $t - $main::systime > 0;
+       if ($t && $t - $main::systime > 0) {
+               my ($prefix) = $text = /\b(\w{1,4})$/;
+               if ($prefix) {
+                       my @ans = Prefix::extract($prefix);
+                       if (@ans) {
+
+                               # if we find a prefix then chop it off
+                               # the end of the string and then look for
+                               # a spot with that text. If we find it then
+                               # it has be sucked from an AR-C node and is
+                               # a dupe.
+                               my $txt = $text;
+                               $txt =~ s/\b\w{1,4}$//;
+                               $txt =~ s/[^A-Z0-9]//g;
+                               $t = DXDupe::find($ldupkey . $txt);
+                               return 1 if $t && $t - $main::systime > 0;
+                       }
+               } 
+       }
+       $text =~ s/[^A-Z0-9]//g;
+       $ldupkey .= $text;
        DXDupe::add($ldupkey, $main::systime+$dupage);
 #      my $sdupkey = "X$freq|$call|$by";
 #      $t = DXDupe::find($sdupkey);