mirror of
git://scm.dxcluster.org/scm/spider
synced 2024-09-21 15:57:12 +00:00
push non-pc9x nodes to the back for routing
Currently, if a directly connected non-pc9x node advertises a route to another node, even if that node
This commit is contained in:
parent
0181f6483f
commit
be8bb8ddec
@ -1559,7 +1559,7 @@ sub pc92_handle_first_slot
|
||||
}
|
||||
$parent->here(Route::here($here));
|
||||
$parent->version($version || $pc19_version) if $version;
|
||||
$parent->build($build) if $build && $build > $parent->build;
|
||||
$parent->build($build) if $build;
|
||||
$parent->PC92C_dxchan($self->{call}) unless $self->{call} eq $parent->call;
|
||||
return ($parent, @radd);
|
||||
}
|
||||
@ -1674,16 +1674,9 @@ sub handle_92
|
||||
# this is the main route section
|
||||
# here is where all the routes are created and destroyed
|
||||
|
||||
# cope with missing duplicate node calls in the first slot for A or D
|
||||
# cope with missing duplicate node calls in the first slot
|
||||
my $me = $_[4] || '';
|
||||
if (($sort eq 'A' || $sort eq 'D')) {
|
||||
$me ||= _encode_pc92_call($parent) unless $me ;
|
||||
} else {
|
||||
unless ($me) {
|
||||
dbg("PCPROT: this type of PC92 *must* have a node call in the first slot, ignored") if is_dbg('chanerr');
|
||||
return;
|
||||
}
|
||||
}
|
||||
$me ||= _encode_pc92_call($parent) unless $me ;
|
||||
|
||||
my @ent = map {my @a = _decode_pc92_call($_); @a ? \@a : ()} grep {$_ && /^[0-7]/} $me, @_[5 .. $#_];
|
||||
|
||||
|
@ -422,7 +422,7 @@ sub pc92d
|
||||
# send a config
|
||||
sub pc92c
|
||||
{
|
||||
return _gen_pc92('C', 1, @_);
|
||||
return _gen_pc92('C', 0, @_);
|
||||
}
|
||||
|
||||
# send a keep alive
|
||||
|
@ -296,6 +296,8 @@ sub findroutes
|
||||
|
||||
# recursion detector
|
||||
return () if $seen->{$call};
|
||||
|
||||
# return immediately if we are directly connected
|
||||
if (my $dxchan = DXChannel::get($call)) {
|
||||
$seen->{$call}++;
|
||||
push @out, $level ? [$level, $dxchan] : $dxchan;
|
||||
@ -308,8 +310,11 @@ sub findroutes
|
||||
return () unless $nref;
|
||||
foreach my $ncall (@{$nref->{parent}}) {
|
||||
unless ($seen->{$ncall}) {
|
||||
dbg("recursing from $call -> $ncall") if isdbg('routec');
|
||||
my @rout = findroutes($ncall, $level+1, $seen);
|
||||
|
||||
# put non-pc9x nodes to the back of the queue
|
||||
my $l = $level + ($nref->{do_pc9x} ? 0 : 30);
|
||||
dbg("recursing from $call -> $ncall level $l") if isdbg('routec');
|
||||
my @rout = findroutes($ncall, $l+1, $seen);
|
||||
push @out, @rout;
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,6 @@ use vars qw($version $subversion $build);
|
||||
|
||||
$version = '1.54';
|
||||
$subversion = '0';
|
||||
$build = '167';
|
||||
$build = '168';
|
||||
|
||||
1;
|
||||
|
Loading…
Reference in New Issue
Block a user