X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtHandle.pm;h=863789d3bd3a85cd8500953eba7f6fe573840090;hb=2c7556025be203a53e85ee7b8e2f799834cc71f6;hp=fc05280a92afd22317cce66601e064478fcd3caf;hpb=b953903f1c33ae35ce24bad344e46ab17b0b5d95;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index fc05280a..863789d3 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -646,7 +646,8 @@ sub handle_19 # The justification for this is that most of it is wrong or out of date # anyway. # - # From now on we are only going to believe PC92 data. + # From now on we are only going to believe PC92 data and locally connected + # non-pc92 nodes. # for ($i = 1; $i < $#_-1; $i += 4) { my $here = $_[$i]; @@ -731,7 +732,7 @@ sub handle_19 if (@rout) { $self->route_pc21($self->{call}, $line, @rout); $self->route_pc19($self->{call}, $line, @rout); - $self->route_pc92a($main::mycall, $line, $main::routeroot, @rout); + $self->route_pc92a($main::mycall, $line, $main::routeroot, @rout) if $self->{state} eq 'normal'; } } @@ -816,6 +817,15 @@ sub handle_22 my $origin = shift; $self->state('normal'); $self->{lastping} = 0; + + # send out delayed PC92 config for this node if it is external + unless ($self->{do_pc92}) { + my $node = Route::Node::get($self->{call}); + if ($node) { + my @rout = map {my $r = Route::User::get($_); $r ? ($r) : ()} $node->users; + $self->route_pc92c($main::mycall, undef, $node, @rout); + } + } } # WWV info @@ -1342,7 +1352,7 @@ sub gen_pc9x_t return $_last_time - $main::systime_daystart; } else { $_last_occurs++; - return sprintf "$_last_time.%02d", $_last_occurs; + return sprintf "%d.%02d", $_last_time - $main::systime_daystart, $_last_occurs; } } @@ -1395,8 +1405,7 @@ sub handle_92 return; } - my $parent = check_pc9x_t($pcall, $t, 92, 1); - return unless $parent; + my $parent = check_pc9x_t($pcall, $t, 92, 1) || return; $parent->lastid->{92} = $t; $parent->do_pc92(1); @@ -1476,12 +1485,10 @@ sub handle_92 $self->route_pc21($pcall, undef, $r) if $r->isa('Route::Node'); $self->route_pc17($pcall, undef, $parent, $r) if $r->isa('Route::User'); } - foreach my $r (@radd) { - next unless $r; - - $self->route_pc19($pcall, undef, $r) if $r->isa('Route::Node'); - $self->route_pc16($pcall, undef, $parent, $r) if $r->isa('Route::User'); - } + my @pc19 = grep { $_ && $_->isa('Route::Node') } @radd; + my @pc16 = grep { $_ && $_->isa('Route::User') } @radd; + $self->route_pc19($pcall, undef, @pc19) if @pc19; + $self->route_pc16($pcall, undef, $parent, @pc16) if @pc16; } # if get here then rebroadcast the thing with its Hop count decremented (if