X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=a1f909e752511fec43e175726d37a3afa8121b87;hb=3bf6ed79b64c3936475039eee3ea581d8ee04f04;hp=da2c1c51ddc8c19586f9d96c9c48c3180d46e1a0;hpb=82236b001650f0e9770d25566a033501ec4fb6f4;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index da2c1c51..a1f909e7 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -191,6 +191,12 @@ sub init sub new { my $self = DXChannel::alloc(@_); + + # add this node to the table, the values get filled in later + my $pkg = shift; + my $call = shift; + $main::routeroot->add($call) if $call ne $main::mycall; + return $self; } @@ -252,9 +258,6 @@ sub start # send info to all logged in thingies $self->tell_login('loginn'); - # add this node to the table, the values get filled in later - $main::routeroot->add($call); - Log('DXProt', "$call connected"); } @@ -1379,12 +1382,12 @@ sub send_local_config # 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} } DXChannel::get_all_nodes(); - @localnodes = map { Route::Node::get($_->{call}) } @dxchan if @dxchan; + @localnodes = map { Route::Node::get($_->{call}) or die "connot find node $_->{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; + push @remotenodes, Route::Node::get($n) unless grep $n eq $_, @rnodes; } unshift @localnodes, $main::routeroot; }