X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=26d1b169854b585ee1cd94a136da525cb1ff47d7;hb=29ec5bb85c591182dd868e7a3d87f510d7b47e9b;hp=e7f3c7c09b5e2debc7c0d29e447cdbf82766284c;hpb=44bab9382ffb0bf12639af84729d1c42ac4d9ae2;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index e7f3c7c0..26d1b169 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -67,8 +67,8 @@ $baddxfn = "$main::data/baddx.pl"; [ qw(d n n n n m c c h) ], # pc23 [ qw(c p h) ], # pc24 [ qw(c c n n) ], # pc25 - [ qw(f m d t m c c) ], # pc26 - [ qw(d n n n n m c c) ], # pc27 + [ qw(f m d t m c c bc) ], # pc26 + [ qw(d n n n n m c c bc) ], # pc27 [ qw(c c c c d t p m bp n p bp bc) ], # pc28 [ qw(c c n m) ], # pc29 [ qw(c c n) ], # pc30 @@ -141,7 +141,7 @@ sub check my $i; shift; # not interested in the first field - for ($i = 0; $i < @_; $i++) { + for ($i = 0; $i < @$ref; $i++) { my ($blank, $act) = $$ref[$i] =~ /^(b?)(\w)$/; return 0 unless $act; next if $blank && $_[$i] =~ /^[ \*]$/; @@ -263,6 +263,8 @@ sub normal { my ($self, $line) = @_; my @field = split /\^/, $line; + return unless @field; + pop @field if $field[-1] eq '~'; # print join(',', @field), "\n"; @@ -422,7 +424,7 @@ sub normal # announce duplicate checking $field[3] =~ s/^\s+//; # remove leading blanks if (AnnTalk::dup($field[1], $field[2], $field[3])) { - dbg('chan', "Duplicate Announce ignored\n"); + dbg('chan', "Duplicate Announce ignored"); return; } @@ -725,7 +727,7 @@ sub normal if ($pcno == 49 || $field[1] eq $main::mycall) { DXMsg::process($self, $line); } else { - $self->route($field[1], $line); + $self->route($field[1], $line) unless $self->is_clx; } return; } @@ -886,6 +888,13 @@ sub normal return; } + if ($pcno == 75) { # dunno but route it + if ($field[1] ne $main::mycall) { + $self->route($field[1], $line); + } + return; + } + if ($pcno == 73) { # WCY broadcasts # do some de-duping @@ -1259,7 +1268,10 @@ sub send_announce $dxchan->send($routeit) unless $dxchan->{isolate} || $self->{isolate}; } - } elsif ($dxchan->is_user && $dxchan->{ann}) { + } elsif ($dxchan->is_user) { + unless ($dxchan->{ann}) { + next if $_[0] ne $main::myalias && $_[0] ne $main::mycall; + } next if $target eq 'SYSOP' && $dxchan->{priv} < 5; my $buf = "$to$target de $_[0]: $text"; $buf .= "\a\a" if $dxchan->{beep}; @@ -1344,7 +1356,7 @@ sub broadcast_ak1a { my $s = shift; # the line to be rebroadcast my @except = @_; # to all channels EXCEPT these (dxchannel refs) - my @dxchan = DXChannel::get_all_ak1a(); + my @dxchan = DXChannel::get_all_nodes(); my $dxchan; # send it if it isn't the except list and isn't isolated and still has a hop count @@ -1361,7 +1373,7 @@ sub broadcast_all_ak1a { my $s = shift; # the line to be rebroadcast my @except = @_; # to all channels EXCEPT these (dxchannel refs) - my @dxchan = DXChannel::get_all_ak1a(); + my @dxchan = DXChannel::get_all_nodes(); my $dxchan; # send it if it isn't the except list and isn't isolated and still has a hop count