X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=perl%2FDXProtHandle.pm;h=df2957a18e5b5c699be7b2e6c042b0cab4cd2e86;hb=ad7e69f78ee4c0593e1d7576a7c1fd3b13931f84;hp=c65ebc6d6f40a4fbca6e96268086ef7705a4d452;hpb=c77f93ed41e28348d9553f31ab14fd6226c8ac42;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index c65ebc6d..df2957a1 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -37,6 +37,9 @@ use RouteDB; use strict; +use vars qw($VERSION $BRANCH); +($VERSION, $BRANCH) = dxver(q$Revision$); + use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restime $eph_pc34_restime $last_hour $last10 %eph %pings %rcmds $ann_to_talk $pingint $obscount %pc19list $chatdupeage $chatimportfn @@ -491,7 +494,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 +739,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 +764,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 +836,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_pc92a($main::mycall, undef, $node, @rout); - } - } + $self->send_delayed_pc92 } # WWV info @@ -1274,7 +1285,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;