X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FRoute.pm;h=b5c02f0998bb437b7430cc65db71b787220594cd;hb=183573e742b5233e3b7ac6882770d16942a10542;hp=f406a98a619bf2460abb532a97d088b8320b1d0d;hpb=febdc9bd8f6cd065d217ba089fab4361e9980f35;p=spider.git diff --git a/perl/Route.pm b/perl/Route.pm index f406a98a..b5c02f09 100644 --- a/perl/Route.pm +++ b/perl/Route.pm @@ -232,18 +232,21 @@ sub get sub alldxchan { my $self = shift; - + my @dxchan; my $dxchan = DXChannel->get($self->{call}); - if ($dxchan) { - return (grep $dxchan == $_, @_) ? () : ($dxchan); - } + push @dxchan, $dxchan if $dxchan; # it isn't, build up a list of dxchannels and possible ping times # for all the candidates. - my @dxchan = @_; foreach my $p (@{$self->{parent}}) { - my $ref = $self->get($p); - push @dxchan, $ref->alldxchan(@dxchan); + my $dxchan = DXChannel->get($p); + if ($dxchan) { + push @dxchan, $dxchan unless grep $dxchan == $_, @dxchan; + } else { + next if $p eq $main::mycall; # the root + my $ref = $self->get($p); + push @dxchan, $ref->alldxchan if $ref; + } } return @dxchan; } @@ -251,7 +254,9 @@ sub alldxchan sub dxchan { my $self = shift; - my $dxchan; + my $dxchan = DXChannel->get($self->{call}); + return $dxchan if $dxchan; + my @dxchan = $self->alldxchan; return undef unless @dxchan;