X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=9903ceb421c744d9b5642d843b7f1e9b99a0af1b;hb=9549aeeb927ca0deb3cac4d06241f4dc4a054bb1;hp=1cee4da0fd6006ad1e3c9cdef6fb1a94d33a16ef;hpb=937b3f6592ae13be16dfe171b30817ee39d27bf0;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 1cee4da0..9903ceb4 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -457,12 +457,10 @@ sub process $pc50s = pc50($main::me, scalar DXChannel::get_all_users); eph_dup($pc50s); $last_pc50 = $t; - time_out_pc92_routes(); } foreach $dxchan (@dxchan) { next unless $dxchan->is_node; - next if $dxchan->handle_xml; next if $dxchan == $main::me; # send the pc50 @@ -471,12 +469,14 @@ sub process # 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'); } } } @@ -506,22 +506,12 @@ sub process $dxchan->update_pc92_next; # this won't actually do anything, it's just to be tidy } } + } - # do the keepalives in the same way, but use a different timer - if ($main::systime >= $dxchan->{next_pc92_keepalive}) { - if ($dxchan == $main::me || !$dxchan->{do_pc9x}) { - dbg("ROUTE: pc92 keepalive candidate: $dxchan->{call}") if isdbg('obscount'); - my $ref = Route::Node::get($dxchan->{call}); - if ($dxchan == $main::me || ($ref && ($ref->measure_pc9x_t($main::systime-$main::systime_daystart)) >= $pc92_keepalive_period/2)) { - $dxchan->broadcast_pc92_keepalive($dxchan->{call}); - } else { - $dxchan->update_pc92_keepalive; - } - } else { -# $dxchan->update_pc92_next; # this won't actually do anything, it's just to be tidy - $dxchan->update_pc92_keepalive; - } - } + # do the keepalive for me, if required + if ($main::systime >= $main::me->{next_pc92_keepalive}) { + time_out_pc92_routes(); + $main::me->broadcast_pc92_keepalive($main::mycall); } if ($pc92_slug_changes && $main::systime >= $last_pc92_slug + $pc92_slug_changes) { @@ -1217,12 +1207,12 @@ sub addrcmd 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"))); } @@ -1283,7 +1273,7 @@ sub disconnect } # 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; }