to make sure that these are passed on like the legacy records.
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;
# 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";
}
$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
$rspfcheck = 1;
$eph_restime = 180;
$eph_info_restime = 60*60;
+$eph_pc15_restime = 6*60;
$eph_pc34_restime = 30;
$pingint = 5*60;
$obscount = 2;
# 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();
$investigation_int $pc19_version $myprot_version
%nodehops $baddx $badspotter $badnode $censorpc $rspfcheck
$allowzero $decode_dk0wcy $send_opernam @checklist
+ $eph_pc15_restime
);
# incoming talk commands
$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
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
{