foreach $dxchan (@dxchan) {
next unless $dxchan->is_node;
- next if $dxchan->handle_xml;
next if $dxchan == $main::me;
# send the pc50
# send a ping out on this channel
if ($dxchan->{pingint} && $t >= $dxchan->{pingint} + $dxchan->{lastping}) {
if ($dxchan->{nopings} <= 0) {
+ dbg("ROUTE: $dxchan->{call} disconnected on ping obscount") if isdbg('obscount');
$dxchan->disconnect;
} else {
DXXml::Ping::add($main::me, $dxchan->call);
$dxchan->{nopings} -= 1;
$dxchan->{lastping} = $t;
$dxchan->{lastping} += $dxchan->{pingint} / 2 unless @{$dxchan->{pingtime}};
+ dbg("ROUTE: $dxchan->{call} ping obscount = $dxchan->{nopings}") if isdbg('obscount');
}
}
}
sub disconnect
{
my $self = shift;
- my $pc39flag = shift;
+ my $pc39flag = shift || 0;
my $call = $self->call;
return if $self->{disconnecting}++;
- unless ($pc39flag && $pc39flag == 1) {
+ unless ($pc39flag == 1) {
$self->send_now("D", DXProt::pc39($main::mycall, $self->msg('disc1', "System Op")));
}
}
# broadcast to all other nodes that all the nodes connected to via me are gone
- unless ($pc39flag && $pc39flag == 2) {
+ unless ($pc39flag == 2) {
$self->route_pc21($main::mycall, undef, @rout) if @rout;
$self->route_pc92d($main::mycall, undef, $main::routeroot, $node) if $node;
}
use DXProt;
use IsoTime;
use Time::HiRes qw(gettimeofday tv_interval);
+use Route::Node;
use vars qw(@ISA %pings);
@ISA = qw(DXXml);
$tochan->{pingave} = $tochan->{pingave} + (($t - $tochan->{pingave}) / 6);
}
$tochan->{nopings} = $nopings; # pump up the timer
+ dbg("ROUTE: $tochan->{call} ping obscount reset to $tochan->{nopings}") if isdbg('obscount');
+ my $nref = Route::Node::get($tochan->{call});
+ if ($nref) {
+ my $n = $nref->reset_obs;
+ dbg("ROUTE: reset obscount on $tochan->{call} to $n (ping)") if isdbg('obscount');
+ }
}
_handle_believe($from, $fromdxchan->{call});
}