X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=b6e959e7ddc23b5dcc8109347ff5552fd00d3af0;hb=f63d598af3f797b56b8d5e23ec4ff5254192eee9;hp=e0db5fa7c8a11cf92a98fd1e9b5bf532269861de;hpb=dabf8497c51068614efdd147f35c0a143f547424;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index e0db5fa7..b6e959e7 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -33,6 +33,7 @@ use Route; use Route::Node; use Script; use DXProtHandle; +use DXCIDR; use strict; @@ -246,8 +247,9 @@ sub init $main::me->{pingave} = 0; $main::me->{registered} = 1; $main::me->{version} = $main::version; - $main::me->{build} = "$main::subversion.$main::build"; + $main::me->{build} = $main::build; $main::me->{do_pc9x} = 1; + $main::me->{hostname} = $main::clusteraddr; $main::me->update_pc92_next($pc92_short_update_period); $main::me->update_pc92_keepalive; } @@ -288,7 +290,9 @@ sub start # log it my $host = $self->{conn}->peerhost; $host ||= "AGW Port #$self->{conn}->{agwport}" if exists $self->{conn}->{agwport}; + $host ||= $host if is_ipaddr($host); $host ||= "unknown"; + $self->{hostname} = $host; Log('DXProt', "$call connected from $host"); @@ -430,9 +434,9 @@ sub normal my $sub = "handle_$pcno"; if ($self->can($sub)) { - $self->$sub($pcno, $line, $origin, @field); + $self->$sub($pcno, $line, $origin, \@field); } else { - $self->handle_default($pcno, $line, $origin, @field); + $self->handle_default($pcno, $line, $origin, \@field); } } @@ -955,7 +959,8 @@ sub broadcast_pc92_update my $nref = Route::Node::get($call); unless ($nref) { - dbg("ERROR: broadcast_pc92_update - Route::Node $call disappeared"); + cluck("ERROR: broadcast_pc92_update - Route::Node $call disappeared"); + $self->update_pc92_next; return; } my $l = $nref->last_PC92C(gen_my_pc92_config($nref)); @@ -973,7 +978,8 @@ sub broadcast_pc92_keepalive my $nref = Route::Node::get($call); unless ($nref) { - dbg("ERROR: broadcast_pc92_keepalive - Route::Node $call disappeared"); + cluck("ERROR: broadcast_pc92_keepalive - Route::Node $call disappeared"); + $self->update_pc92_keepalive; return; } my $l = pc92k($nref); @@ -1111,13 +1117,13 @@ sub process_rcmd my ($self, $tonode, $fromnode, $user, $cmd) = @_; if ($tonode eq $main::mycall) { my $ref = DXUser::get_current($fromnode); - unless ($ref && UNIVERSAL($ref, 'DXUser')) { + unless ($ref && UNIVERSAL::isa($ref, 'DXUser')) { dbg("DXProt process_rcmd: user $fromnode isn't a reference (check user_asc and tell G1TLH)"); $self->send_rcmd_reply($main::mycall, $fromnode, $user, "sorry...!"); return; } my $cref = Route::Node::get($fromnode); - unless ($cref && UNIVERSAL($cref, 'Route')) { + unless ($cref && UNIVERSAL::isa($cref, 'Route')) { dbg("DXProt process_rcmd: Route $fromnode isn't a reference (tell G1TLH)"); $self->send_rcmd_reply($main::mycall, $fromnode, $user, "sorry...!"); return;