X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=f4f56e7dff3e701f190daf5a3a97c605ce9b72b0;hb=refs%2Ftags%2FR_1_29;hp=1ca20badcdddd0f47a7bc0485dd75579a529357b;hpb=b81c3de85161b74c53d32f2a0bccf31e17ffbf80;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 1ca20bad..f4f56e7d 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -178,6 +178,14 @@ sub normal } if ($pcno == 11 || $pcno == 26) { # dx spot + + # route 'foreign' pc26s + if ($pcno == 26) { + if ($field[7] ne $main::mycall) { + route($field[7], $line); + return; + } + } # if this is a 'nodx' node then ignore it last SWITCH if grep $field[7] =~ /^$_/, @DXProt::nodx_node; @@ -441,6 +449,15 @@ sub normal } if ($pcno == 23 || $pcno == 27) { # WWV info + + # route 'foreign' pc27s + if ($pcno == 27) { + if ($field[8] ne $main::mycall) { + route($field[8], $line); + return; + } + } + # do some de-duping my $d = cltounix($field[1], sprintf("%02d18Z", $field[2])); my $sfi = unpad($field[3]); @@ -495,7 +512,7 @@ sub normal my @in = reverse Spot::search(1, undef, undef, 0, $field[3]-1); my $in; foreach $in (@in) { - $self->send(pc26(@{$in}[0..4], $in->[7])); + $self->send(pc26(@{$in}[0..4], $field[2])); } } @@ -504,14 +521,18 @@ sub normal my @in = reverse Geomag::search(0, $field[4], time, 1); my $in; foreach $in (@in) { - $self->send(pc27(@{$in})); + $self->send(pc27(@{$in}[0..5], $field[2])); } } return; } - + if (($pcno >= 28 && $pcno <= 33) || $pcno == 40 || $pcno == 42 || $pcno == 49) { # mail/file handling - DXMsg::process($self, $line); + if ($field[1] eq $main::mycall) { + DXMsg::process($self, $line); + } else { + route($field[1], $line); + } return; } @@ -721,7 +742,7 @@ sub finish delete $pings{$call}; # now broadcast to all other ak1a nodes that I have gone - broadcast_ak1a(pc21($call, 'Gone.'), $self); + broadcast_ak1a(pc21($call, 'Gone.'), $self) unless $self->{isolate}; Log('DXProt', $call . " Disconnected"); $ref->del() if $ref;