arrange for chat announces only to go to spider nodes
[spider.git] / perl / DXProt.pm
index 1b361d0602b19563ea00851fd6c63d96dfc98af5..adf112b0884b86adaecd94f39cc01896926b94b9 100644 (file)
@@ -607,8 +607,16 @@ sub handle_12
 
        my $dxchan;
        
-       if ($_[2] eq '*' || $_[2] eq $main::mycall) {
+       if ((($dxchan = DXChannel->get($_[2])) && $dxchan->is_user) || $_[4] =~ /^[\#\w]+$/){
+               $self->send_chat($line, @_[1..6]);
+       } elsif ($_[2] eq '*' || $_[2] eq $main::mycall) {
 
+               # ignore something that looks like a chat line coming in with sysop
+               # flag - this is a kludge...
+               if ($_[3] =~ /^\#\d+ / && $_[4] eq '*') {
+                       dbg('PCPROT: Probable chat rewrite, dropped') if isdbg('chanerr');
+                       return;
+               }
 
                # here's a bit of fun, convert incoming ann with a callsign in the first word
                # or one saying 'to <call>' to a talk if we can route to the recipient
@@ -626,8 +634,6 @@ sub handle_12
        
                # send it
                $self->send_announce($line, @_[1..6]);
-       } elsif ((($dxchan = DXChannel->get($_[2])) && $dxchan->is_user) || $_[4] =~ /^[\#\w]+$/){
-               $self->send_chat($line, @_[1..6]);
        } else {
                $self->route($_[2], $line);
        }
@@ -1835,7 +1841,9 @@ sub send_chat
        foreach $dxchan (@dxchan) {
                next if $dxchan == $main::me;
                next if $dxchan == $self && $self->is_node;
+               next unless $dxchan->is_spider || $dxchan->is_ak1a;
                next if $target eq 'LOCAL' && $dxchan->is_node;
+               
                $dxchan->chat($line, $self->{isolate}, $target, $_[1], $text, @_, $self->{call}, $ann_dxcc, $ann_itu, $ann_cq, $org_dxcc, $org_itu, $org_cq);
        }
 }