add more debugging and (possibly) fix the problem.
[spider.git] / perl / DXProt.pm
index c00219ecd780b4354d79fb4d61403ca017fb76ed..7d0787d296090a2db1a9680bd8dce1ef09a359bb 100644 (file)
@@ -842,11 +842,22 @@ sub time_out_pc92_routes
        my @nodes = grep {$_->do_pc92 || $_->via_pc92} Route::Node::get_all();
        my @rdel;
        foreach my $n (@nodes) {
-               if ($n->dec_obs <= 0) {
+               my $o = $n->dec_obs;
+               if ($o <= 0) {
+                       if (my $dxchan = DXChannel::get($n->call)) {
+                               dbg("ROUTE: disconnecting local pc92 $dxchan->{call} on obscount") if isdbg('route');
+                               $dxchan->disconnect;
+                               next;
+                       }
                        my @parents = map {Route::Node::get($_)} $n->parents;
                        for (@parents) {
-                               push @rdel, $n->del($_) if $_;
+                               if ($_) {
+                                       dbg("ROUTE: deleting pc92 $_->{call} from $n->{call} on obscount") if isdbg('route');
+                                       push @rdel, $n->del($_);
+                               }
                        }
+               } else {
+                       dbg("ROUTE: obscount on $n->{call} now $o") if isdbg('route');
                }
        }
        for (@rdel) {