change the type of unit for spots
[spider.git] / perl / DXProt.pm
index 1cee4da0fd6006ad1e3c9cdef6fb1a94d33a16ef..9903ceb421c744d9b5642d843b7f1e9b99a0af1b 100644 (file)
@@ -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;
        }