X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=e2c1dae4221ebdc9cceca1ce97c14b09d11637f4;hb=eef5d189206ebcfaf8e83675803829c72671a320;hp=a607b4094151155fb7edd7553c435ae0e08f2d34;hpb=bdea2174f3035fb9b75858dc1d6e2be47b1e8fc1;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index a607b409..e2c1dae4 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -51,7 +51,7 @@ $baddxfn = "$main::data/baddx.pl"; @checklist = ( - [ qw(c c m p bc c) ], # pc10 + [ qw(c c m bp bc c) ], # pc10 [ qw(f m d t m c c h) ], # pc11 [ qw(c bc m bp bm p h) ], # pc12 [ qw(c h) ], # @@ -239,7 +239,7 @@ sub start # send initialisation string unless ($self->{outbound}) { - $self->send(pc38()) if DXNode->get_all(); +# $self->send(pc38()) if DXNode->get_all(); $self->send(pc18()); $self->{lastping} = $main::systime; } else { @@ -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"; @@ -615,12 +617,16 @@ sub normal if ($call ne $main::mycall) { # don't allow malicious buggers to disconnect me! my $node = DXCluster->get_exact($call); if ($node) { + if ($call eq $self->{call}) { + dbg('chan', "LOOP: Trying to disconnect myself with PC21"); + return; + } if ($node->dxchan != $self) { dbg('chan', "LOOP: $call come in on wrong channel"); return; } my $dxchan; - if (($dxchan = DXChannel->get($call)) && $dxchan != $self) { + if ($dxchan = DXChannel->get($call)) { dbg('chan', "LOOP: $call connected locally"); return; } @@ -725,7 +731,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; } @@ -1354,7 +1360,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 @@ -1371,7 +1377,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