add badword check to the spotted field
[spider.git] / perl / DXProt.pm
index f8e2b4b99ee9d0c85c1f1a8d75880fde8f5b6b0c..f6e1e75dc86c0ff093348eb945ab2db35141e711 100644 (file)
@@ -415,7 +415,7 @@ sub normal
                        }
 
                        # is it 'baddx'
-                       if ($baddx->in($field[2])) {
+                       if ($baddx->in($field[2]) || BadWords::check($field[2])) {
                                dbg("PCPROT: Bad DX spot, ignored") if isdbg('chanerr');
                                return;
                        }
@@ -825,20 +825,21 @@ sub normal
                                $self->disconnect;
                                return;
                        }
-                       my $node = Route::Node::get($call);
                        if ($call ne $main::mycall) { # don't allow malicious buggers to disconnect me!
-                               my $dxchan = $node->dxchan;
-                               if ($dxchan && $dxchan ne $self) {
-                                       dbg("PCPROT: PC21 from $self->{call} trying to alter locally connected $call, ignored!") if isdbg('chanerr');
-                                       return;
-                               }
-
                                if ($call eq $self->{call}) {
                                        dbg("PCPROT: Trying to disconnect myself with PC21") if isdbg('chanerr');
                                        return;
                                }
 
+                               my $node = Route::Node::get($call);
                                if ($node) {
+
+                                       my $dxchan = $node->dxchan;
+                                       if ($dxchan && $dxchan ne $self) {
+                                               dbg("PCPROT: PC21 from $self->{call} trying to alter locally connected $call, ignored!") if isdbg('chanerr');
+                                               return;
+                                       }
+
                                        # input filter it
                                        return unless $self->in_filter_route($node);
 
@@ -956,6 +957,7 @@ sub normal
                }
 
                if (($pcno >= 28 && $pcno <= 33) || $pcno == 40 || $pcno == 42 || $pcno == 49) { # mail/file handling
+                       return if $pcno == 49 && eph_dup($line);
                        if ($pcno == 49 || $field[1] eq $main::mycall) {
                                DXMsg::process($self, $line);
                        } else {