From: minima Date: Sun, 20 Feb 2005 23:13:31 +0000 (+0000) Subject: fix (most of) the local config issues for aranea X-Git-Tag: R_1_52~180 X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=d737a53dd9247a0b3c57852dd605047d241beb47;p=spider.git fix (most of) the local config issues for aranea --- diff --git a/perl/Aranea.pm b/perl/Aranea.pm index 087eefc3..5ee04b1c 100644 --- a/perl/Aranea.pm +++ b/perl/Aranea.pm @@ -59,7 +59,6 @@ sub new # add this node to the table, the values get filled in later my $pkg = shift; my $call = shift; - $main::routeroot->add($call, '5251', Route::here(1)) if $call ne $main::mycall; $self->{'sort'} = 'W'; return $self; } @@ -73,7 +72,7 @@ sub start # log it my $host = $self->{conn}->{peerhost} || "unknown"; Log('Aranea', "$call connected from $host"); - + # remember type of connection $self->{consort} = $line; $self->{outbound} = $sort eq 'O'; diff --git a/perl/Thingy/Bye.pm b/perl/Thingy/Bye.pm index a2964966..6d75b618 100644 --- a/perl/Thingy/Bye.pm +++ b/perl/Thingy/Bye.pm @@ -39,7 +39,7 @@ sub handle # fix the interface routing my $intcall = $thing->{user} || $thing->{origin}; - if ($dxchan->{call} eq $thing->{origin}) { + if ($dxchan->{call} eq $thing->{origin} && !$thing->{user}) { RouteDB::delete_interface($intcall); } else { RouteDB::delete($intcall, $dxchan->{call}); @@ -48,7 +48,7 @@ sub handle # pc prot generation my @pc21; if (my $user = $thing->{user}) { - my $parent = Route::Node->get($thing->{origin}); + my $parent = Route::Node::get($thing->{origin}); my $uref = Route::get($user); if ($parent && $uref) { if ($uref->isa('Route::Node')) { diff --git a/perl/Thingy/Hello.pm b/perl/Thingy/Hello.pm index 5b639006..ed3e5b5c 100644 --- a/perl/Thingy/Hello.pm +++ b/perl/Thingy/Hello.pm @@ -50,28 +50,34 @@ sub handle my $thing = shift; my $dxchan = shift; + my $origin = $thing->{origin}; + my $node = $dxchan->{call}; + my $nref; + $thing->{pc19n} ||= []; # verify authenticity - if ($dxchan->{call} eq $thing->{origin}) { + if ($node eq $origin) { # for directly connected calls if ($verify_on_login) { my $pp = $dxchan->user->passphrase; unless ($pp) { - dbglog('err', "Thingy::Hello::handle: verify on and $thing->{origin} has no passphrase"); + dbglog('err', "Thingy::Hello::handle: verify on and $origin has no passphrase"); $dxchan->disconnect; return; } - my $auth = Verify->new("DXSp,$thing->{origin},$thing->{s},$thing->{v},$thing->{b}"); + my $auth = Verify->new("DXSp,$origin,$thing->{s},$thing->{v},$thing->{b}"); unless ($auth->verify($thing->{auth}, $dxchan->user->passphrase)) { - dbglog('err', "Thingy::Hello::handle: verify on and $thing->{origin} failed auth check"); + dbglog('err', "Thingy::Hello::handle: verify on and $origin failed auth check"); $dxchan->disconnect; return; } } if ($dxchan->{state} ne 'normal') { + $nref = $main::routeroot->add($origin, $thing->{v}, 1); + push @{$thing->{pc19n}}, $nref if $nref; $dxchan->start($dxchan->{conn}->{csort}, $dxchan->{conn}->{outbound} ? 'O' : 'A'); if ($dxchan->{outbound}) { my $thing = Thingy::Hello->new(); @@ -82,17 +88,15 @@ sub handle $thing->broadcast; } } - my $origin = $thing->{origin}; - $nref = $main::routeroot->add($origin, $thing->{v}, 1); - push @{$thing->{pc19n}}, $nref if $nref; + $nref = Route::Node::get($origin); } else { # for otherwise connected calls, that come in relayed from other nodes # note that we cannot do any connections at this point - $nref = Route::Node::get($thing->{origin}); + $nref = Route::Node::get($origin); unless ($nref) { my $v = $thing->{user} ? undef : $thing->{v}; - $nref = Route::Node->new($thing->{origin}, $v, 1); + $nref = Route::Node->new($origin, $v, 1); push @{$thing->{pc19n}}, $nref; } } @@ -111,8 +115,8 @@ sub handle } } } - RouteDB::update($thing->{origin}, $dxchan->{call}, $thing->{hopsaway}); - RouteDB::update($thing->{user}, $dxchan->{call}, $thing->{hopsaway}) if $thing->{user}; + RouteDB::update($origin, $node, $thing->{hopsaway}); + RouteDB::update($thing->{user}, $node, $thing->{hopsaway}) if $thing->{user}; delete $thing->{pc19n} unless @{$thing->{pc19n}};