]> dxcluster.net Git - spider.git/commitdiff
various fixes
authorminima <minima>
Sat, 9 Jun 2001 01:37:35 +0000 (01:37 +0000)
committerminima <minima>
Sat, 9 Jun 2001 01:37:35 +0000 (01:37 +0000)
perl/DXProt.pm
perl/Route/Node.pm
perl/Route/User.pm

index 9fb40a81b4f5100baddee61f002dbd0e92da77cd..59e7ca07d7bf2ad89622a3c1096ae237d123cf65 100644 (file)
@@ -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);
        }
 }
index c70682040e31bec42d67986cae10c6084850b3b3..3e0c3b0888c6b2305dbc4f4616cf0e5dbb4fcec8 100644 (file)
@@ -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
index adb2bbd17f25e5395aed9bffd189d3b5ca7d3e86..2bbfe5b751762c812ae7aa6bb1eabdd429eb8cee 100644 (file)
@@ -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