Spanish 3rd attempt
[spider.git] / perl / DXProt.pm
index 99fc85ce7e3c42723bec9a8c5da038f2d540beb9..c3a98ecd9c81c37784f73bb812988dedc8f11baf 100644 (file)
@@ -46,7 +46,7 @@ $last_hour = time;                            # last time I did an hourly periodic update
 %pings = ();                    # outstanding ping requests outbound
 %rcmds = ();                    # outstanding rcmd requests outbound
 %nodehops = ();                 # node specific hop control
-$censorpc = 0;                                 # Do a BadWords::check on text fields and reject things
+$censorpc = 1;                                 # Do a BadWords::check on text fields and reject things
                                                                # loads of 'bad things'
 $baddx = new DXHash "baddx";
 $badspotter = new DXHash "badspotter";
@@ -357,6 +357,11 @@ sub normal
                        
                        # do some de-duping
                        $field[5] =~ s/^\s+//;      # take any leading blanks off
+                       $field[2] = unpad($field[2]);   # take off leading and trailing blanks from spotted callsign
+                       if ($field[2] =~ /BUST|BUSTED$/) {
+                               dbg('chan', "PCPROT: useless 'BUSTED' spot");
+                               return;
+                       }
                        if (Spot::dup($field[1], $field[2], $d, $field[5])) {
                                dbg('chan', "PCPROT: Duplicate Spot ignored\n");
                                return;
@@ -596,12 +601,16 @@ sub normal
                                dbg('chan', "PCPROT: $field[2] came in on wrong channel");
                                return;
                        }
-                       if (($dxchan = DXChannel->get($field[2])) && $dxchan != $self) {
-                               dbg('chan', "PCPROT: $field[2] connected locally");
+                       if ($dxchan = DXChannel->get($field[1])) {
+                               dbg('chan', "PCPROT: $field[1] connected locally");
                                return;
                        }
                        my $ref = DXCluster->get_exact($field[1]);
                        if ($ref) {
+                               if ($ref->mynode != $node) {
+                                       dbg('chan', "PCPROT: $field[1] came in from wrong node $field[2]");
+                                       return;
+                               }
                                $ref->del;
                        } else {
                                dbg('chan', "PCPROT: $field[1] not known" );