X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=354d6f5d4407ddb3a2ecf93c87c7366854e5ef8e;hb=729acdaa4d7ee8905ce76f6ab0ef6cd543c3bc49;hp=8f16da6603436b57eb6b36831bfc5b19c7085eed;hpb=e2e4dadc448747744dacc0eb8d99ee950529a9b3;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 8f16da66..354d6f5d 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -239,11 +239,6 @@ sub new my $pkg = shift; my $call = shift; $main::routeroot->add($call, '5000', Route::here(1)) if $call ne $main::mycall; - if ($self->{call} ne $main::mycall) { - my $thing = Thingy::Hello->new(user=>$call); - $thing->broadcast($self); - } - return $self; } @@ -313,8 +308,10 @@ sub start $self->state('init'); $self->{pc50_t} = $main::systime; - my $thing = Thingy::Hello->new(origin=>$main::mycall, user=>$call); + # ALWAYS output the hello + my $thing = Thingy::Hello->new(user => $call, h => $self->{here}); $thing->broadcast($self); + $self->lasthello($main::systime); # send info to all logged in thingies $self->tell_login('loginn'); @@ -786,18 +783,24 @@ sub handle_16 # input filter if required return unless $self->in_filter_route($parent); } + + # is he under the control of the new protocol? + if ($parent && $parent->np) { + dbg("PCPROT: $ncall aranea node, ignored") if isdbg('chanerr'); + return; + } - my $i; + my $i; my @rout; - for ($i = 2; $i < $#_; $i++) { - my ($call, $conf, $here) = $_[$i] =~ /^(\S+) (\S) (\d)/o; - next unless $call && $conf && defined $here && is_callsign($call); - next if $call eq $main::mycall; - - eph_del_regex("^PC17\\^$call\\^$ncall"); - + for ($i = 2; $i < $#_; $i++) { + my ($call, $conf, $here) = $_[$i] =~ /^(\S+) (\S) (\d)/o; + next unless $call && $conf && defined $here && is_callsign($call); + next if $call eq $main::mycall; + + eph_del_regex("^PC17\\^$call\\^$ncall"); + $conf = $conf eq '*'; - + # reject this if we think it is a node already my $r = Route::Node::get($call); my $u = DXUser->get_current($call) unless $r; @@ -808,19 +811,19 @@ sub handle_16 $r = Route::User::get($call); my $flags = Route::here($here)|Route::conf($conf); - + if ($r) { my $au = $r->addparent($parent); if ($r->flags != $flags) { $r->flags($flags); $au = $r; - } + } push @rout, $r if $au; - } else { + } else { push @rout, $parent->add_user($call, $flags); } - + # add this station to the user database, if required $call =~ s/-\d+$//o; # remove ssid for users my $user = DXUser->get_current($call); @@ -883,6 +886,12 @@ sub handle_17 return; } + # is he under the control of the new protocol? + if ($parent && $parent->np) { + dbg("PCPROT: $ncall aranea node, ignored") if isdbg('chanerr'); + return; + } + # input filter if required and then remove user if present if ($parent) { # return unless $self->in_filter_route($parent); @@ -911,8 +920,8 @@ sub handle_18 # record the type and version offered if ($_[1] =~ /DXSpider Version: (\d+\.\d+) Build: (\d+\.\d+)/) { - $self->version(52.51 + $1); - $self->user->version(52.51 + $1); + $self->version(0 + $1); + $self->user->version(0 + $1); $self->build(0 + $2); $self->user->build(0 + $2); unless ($self->is_spider) { @@ -1036,6 +1045,11 @@ sub handle_19 my $r = Route::Node::get($call); my $flags = Route::here($here)|Route::conf($conf); + # is he under the control of the new protocol? + if ($r && $r->np) { + dbg("PCPROT: $call aranea node, ignored") if isdbg('chanerr'); + next; + } # modify the routing table if it is in it, otherwise store it in the pc19list for now if ($r) { my $ar; @@ -1096,7 +1110,10 @@ sub handle_20 $self->{lastping} = 0; my $thing = Thingy::Rt->new(user=>$self->{call}); my $nref = Route::Node::get($self->{call}); - $thing->broadcast if $thing->copy_pc16_data($nref); + $thing->copy_pc16_data($nref); + $thing->broadcast; + + $self->lastcf($main::systime); } # delete a cluster from the list @@ -1155,6 +1172,12 @@ sub handle_21 # input filter it return unless $self->in_filter_route($node); + + # is he under the control of the new protocol? + if ($node->np) { + dbg("PCPROT: $call aranea node, ignored") if isdbg('chanerr'); + return; + } # routing objects push @rout, $node->del($parent); @@ -1179,7 +1202,9 @@ sub handle_22 $self->{lastping} = 0; my $thing = Thingy::Rt->new(user=>$self->{call}); my $nref = Route::Node::get($self->{call}); - $thing->broadcast if $thing->copy_pc16_data($nref); + $thing->copy_pc16_data($nref); + $thing->broadcast; + $self->lastcf($main::systime); } # WWV info