X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FRoute.pm;h=f637539c0c41c11f5ffa531b485789430a2fc4da;hb=d638bda3f73da1b09d029105a0f3c95093c50df5;hp=3301099890e23214948639c8aa28c667bc52dbfd;hpb=c1540ccd7990ec4bd151604dd63583d19fe4d0f6;p=spider.git diff --git a/perl/Route.pm b/perl/Route.pm index 33010998..f637539c 100644 --- a/perl/Route.pm +++ b/perl/Route.pm @@ -291,10 +291,12 @@ sub findroutes my $call = shift; my @out; - dbg("ROUTE: findroutes: $call") if isdbg('findroutes'); + dbg("ROUTE: findroutes $call") if isdbg('findroutes'); # return immediately if we are directly connected - if (my $dxchan = DXChannel::get($call)) { + my $dxchan = DXChannel::get($call); + if ($dxchan) { + dbg("ROUTE: findroutes $call -> directly connected") if isdbg('findroutes'); return $dxchan; } @@ -305,6 +307,13 @@ sub findroutes my @parent = $nref->isa('Route::User') ? @{$nref->{parent}} : $call; my %cand; foreach my $p (@parent) { + # return immediately if we are directly connected or a user's parent node is + $dxchan = DXChannel::get($p); + if ($dxchan) { + dbg("ROUTE: findroutes $call -> connected direct via parent $p") if isdbg('findroutes'); + return $dxchan; + } + my $r = Route::Node::get($p); if ($r) { my %r = $r->PC92C_dxchan; @@ -326,7 +335,7 @@ sub findroutes if (isdbg('findroutes')) { if (@out) { foreach (sort {$b->[0] <=> $a->[0]} @out) { - dbg("ROUTE: findroute $call -> $_->[0] " . $_->[1]->call); + dbg("ROUTE: findroutes $call -> $_->[0] " . $_->[1]->call); } } }