X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtHandle.pm;h=e961b02b82231cefe4e7ec6dbed02e4f32723a5e;hb=a559548c82ccb2171c2942be53fc796d8a4390cf;hp=863789d3bd3a85cd8500953eba7f6fe573840090;hpb=2c7556025be203a53e85ee7b8e2f799834cc71f6;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index 863789d3..e961b02b 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -491,7 +491,7 @@ sub handle_16 } if (@rout) { $self->route_pc16($origin, $line, $parent, @rout); - $self->route_pc92a($main::mycall, undef, $parent, @rout); + $self->route_pc92a($main::mycall, undef, $parent, @rout) if $self->{state} eq 'normal'; } } @@ -736,6 +736,20 @@ sub handle_19 } } +sub send_delayed_pc92 +{ + my $self = shift; + + # 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); + } + } +} + # send local configuration sub handle_20 { @@ -747,6 +761,7 @@ sub handle_20 $self->send(pc22()); $self->state('normal'); $self->{lastping} = 0; + $self->send_delayed_pc92; } # delete a cluster from the list @@ -818,14 +833,7 @@ sub handle_22 $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); - } - } + $self->send_delayed_pc92 } # WWV info @@ -1274,7 +1282,7 @@ sub _decode_pc92_call my $icall = shift; my @part = split /:/, $icall; my ($flag, $call) = unpack "A A*", $part[0]; - return () unless $flag && $flag ge '0' && $flag le '7'; + return () unless defined $flag && $flag ge '0' && $flag le '7'; return () unless $call && is_callsign($call); my $is_node = $flag & 4; my $is_extnode = $flag & 2;