From: minima Date: Sat, 9 Jun 2001 01:37:35 +0000 (+0000) Subject: various fixes X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=3f93e02718a31f272434796e151cb3358a1fd7ed;p=spider.git various fixes --- diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 9fb40a81..59e7ca07 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -1366,27 +1366,31 @@ sub send_local_config my $self = shift; my $n; my @nodes; - my @localcalls; - my @remotecalls; + my @localnodes; + my @remotenodes; # send our nodes if ($self->{isolate}) { - @localcalls = ( $main::mycall ); + @localnodes = ( $main::routeroot ); } else { # create a list of all the nodes that are not connected to this connection # and are not themselves isolated, this to make sure that isolated nodes # don't appear outside of this node - my @dxchan = grep { $_->call ne $main::mycall && $_->call ne $self->{call} && !$_->{isolate} } DXChannel::get_all_nodes(); - @localcalls = map { $_->{call} } @dxchan if @dxchan; - @remotecalls = map {my $r = Route::Node::get($_); $r ? $r->rnodes(@localcalls, $main::mycall, $self->{call}) : () } @localcalls if @localcalls; - unshift @localcalls, $main::mycall; + my @dxchan = grep { $_->call ne $main::mycall && $_->call ne $self->{call} } DXChannel::get_all_nodes(); + @localnodes = map { Route::Node::get($_->{call}) } @dxchan if @dxchan; + my @intcalls = map { $_->nodes } @localnodes if @localnodes; + my $ref = Route::Node::get($self->{call}); + my @rnodes = $ref->nodes; + for my $n (@intcalls) { + push @remotenodes, Route::Node::get($n) if grep $n ne $_, @rnodes; + } + unshift @localnodes, $main::routeroot; } - @nodes = map {my $r = Route::Node::get($_); $r ? $r : ()} (@localcalls, @remotecalls); - send_route($self, \&pc19, scalar @nodes, @nodes); + send_route($self, \&pc19, scalar(@localnodes)+scalar(@remotenodes), @localnodes, @remotenodes); # get all the users connected on the above nodes and send them out - foreach $n (@nodes) { + foreach $n (@localnodes, @remotenodes) { send_route($self, \&pc16, 1, $n, map {my $r = Route::User::get($_); $r ? ($r) : ()} $n->users); } } diff --git a/perl/Route/Node.pm b/perl/Route/Node.pm index c7068204..3e0c3b08 100644 --- a/perl/Route/Node.pm +++ b/perl/Route/Node.pm @@ -219,7 +219,9 @@ sub get { my $call = shift; $call = shift if ref $call; - return $list{uc $call}; + my $ref = $list{uc $call}; + dbg('routerr', "Failed to get Node $call" ) unless $ref; + return $ref; } sub get_all diff --git a/perl/Route/User.pm b/perl/Route/User.pm index adb2bbd1..2bbfe5b7 100644 --- a/perl/Route/User.pm +++ b/perl/Route/User.pm @@ -66,7 +66,9 @@ sub get { my $call = shift; $call = shift if ref $call; - return $list{uc $call}; + my $ref = $list{uc $call}; + dbg('routerr', "Failed to get User $call" ) unless $ref; + return $ref; } sub addparent