X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FRoute.pm;h=e5d89828e50b548d44aa9498c99cab6db974a768;hb=da7c76d285c462562dc9efeacf2db79be921a823;hp=3f940426f4068ffb1e7242de41765eff645b5125;hpb=cc24321cfb0cd5bcb0516ba5587dcf84fed2725e;p=spider.git diff --git a/perl/Route.pm b/perl/Route.pm index 3f940426..e5d89828 100644 --- a/perl/Route.pm +++ b/perl/Route.pm @@ -58,6 +58,7 @@ sub new $self->{itu} = $dxcc[1]->itu; $self->{cq} = $dxcc[1]->cq; } + $self->{flags} = here(1); return $self; } @@ -232,18 +233,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) if $ref; + 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 +255,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;