From ef2bc0f99b5022339b14dcc56f49547220b79f11 Mon Sep 17 00:00:00 2001 From: minima Date: Fri, 5 Jan 2007 18:22:04 +0000 Subject: [PATCH] make sure that pc92 C records are sent on init with last received time to make sure that these are passed on like the legacy records. --- perl/DXCommandmode.pm | 4 ++-- perl/DXProt.pm | 16 ++++++++++++++++ perl/DXProtHandle.pm | 17 +++++++++++++++++ perl/DXProtout.pm | 13 +++++++++++++ 4 files changed, 48 insertions(+), 2 deletions(-) diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index 6d5225bc..3701c085 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -77,7 +77,7 @@ sub new my $ref = Route::User::get($call); if ($ref) { $main::me->route_pc16($main::mycall, undef, $main::routeroot, $ref); - $main::me->route_pc92a($main::mycall, undef, $ref); + $main::me->route_pc92a($main::mycall, undef, $main::routeroot, $ref); } return $self; @@ -580,7 +580,7 @@ sub disconnect # issue a pc17 to everybody interested $main::me->route_pc17($main::mycall, undef, $main::routeroot, $uref); - $main::me->route_pc92d($main::mycall, undef, $uref); + $main::me->route_pc92d($main::mycall, undef, $main::routeroot, $uref); } else { confess "trying to disconnect a non existant user $call"; } diff --git a/perl/DXProt.pm b/perl/DXProt.pm index ccb183c3..97363791 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -50,6 +50,7 @@ use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restim $investigation_int $pc19_version $myprot_version %nodehops $baddx $badspotter $badnode $censorpc $rspfcheck $allowzero $decode_dk0wcy $send_opernam @checklist + $eph_pc15_restime ); $pc11_max_age = 1*3600; # the maximum age for an incoming 'real-time' pc11 @@ -70,6 +71,7 @@ $ann_to_talk = 1; $rspfcheck = 1; $eph_restime = 180; $eph_info_restime = 60*60; +$eph_pc15_restime = 6*60; $eph_pc34_restime = 30; $pingint = 5*60; $obscount = 2; @@ -776,6 +778,20 @@ sub send_pc92_config # push @localnodes, map { my $r = Route::Node::get($_->{call}); $r ? $r : () } DXChannel::get_all_users(); $self->send_route_pc92($main::mycall, \&pc92c, (scalar @localnodes)+1, $main::routeroot, @localnodes); + # send out the configuration of all the PC92 nodes with current configuration + # but with the dates that the last config came in with. + @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} && $_->{do_pc92} } DXChannel::get_all_nodes(); + @localnodes = map { my $r = Route::Node::get($_->{call}); $r ? $r : () } @dxchan; + foreach $node (@localnodes) { + if ($node && $node->lastid->{92}) { + my @rout = map {my $r = Route::get($_); $r ? ($r) : ()} $node->nodes, $node->users; + my $line = gen_pc29_with_time($node->call, 'C', $node->lastid->{92}, @rout); + $self->send($line); + } else { + dbg("sent a null value") if isdbg('chanerr'); + } + } + # send the configuration of all the 'external' nodes that don't handle PC92 # out with the 'external' marker on the first node. @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} && !$_->{do_pc92} } DXChannel::get_all_nodes(); diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index d8bb6ac8..5d7aee9a 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -44,6 +44,7 @@ use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restim $investigation_int $pc19_version $myprot_version %nodehops $baddx $badspotter $badnode $censorpc $rspfcheck $allowzero $decode_dk0wcy $send_opernam @checklist + $eph_pc15_restime ); # incoming talk commands @@ -375,6 +376,22 @@ sub handle_12 $self->route($_[2], $line); } } + +sub handle_15 +{ + my $self = shift; + my $pcno = shift; + my $line = shift; + my $origin = shift; + + if (eph_dup($line, $eph_pc15_restime)) { + dbg("PCPROT: Ephemeral dup, dropped") if isdbg('chanerr'); + } else { + unless ($self->{isolate}) { + DXChannel::broadcast_nodes($line, $self) if $line =~ /\^H\d+\^?~?$/; # send it to everyone but me + } + } +} # incoming user sub handle_16 diff --git a/perl/DXProtout.pm b/perl/DXProtout.pm index 1533c2b4..0ba94dc6 100644 --- a/perl/DXProtout.pm +++ b/perl/DXProtout.pm @@ -404,6 +404,19 @@ sub _gen_pc92 return $s . '^H99^'; } +sub gen_pc92_with_time +{ + my $call = shift; + my $sort = shift; + my $t = shift; + my $ext = 1; + my $s = "PC92^$call^$t^$sort"; + for (@_) { + $s .= "^" . _encode_pc92_call($_, $ext); + } + return $s . '^H99^'; +} + # add a local one sub pc92a { -- 2.43.0