add more debugging and (possibly) fix the problem.
authorminima <minima>
Mon, 15 Jan 2007 16:40:30 +0000 (16:40 +0000)
committerminima <minima>
Mon, 15 Jan 2007 16:40:30 +0000 (16:40 +0000)
perl/DXProt.pm
perl/DXProtHandle.pm

index f4e4e0d5c4caf03ba05a7f7fab5bd0bbe6f512eb..7d0787d296090a2db1a9680bd8dce1ef09a359bb 100644 (file)
@@ -842,9 +842,10 @@ 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 $_->{call} on obscount") if isdbg('route');
+                               dbg("ROUTE: disconnecting local pc92 $dxchan->{call} on obscount") if isdbg('route');
                                $dxchan->disconnect;
                                next;
                        }
@@ -855,6 +856,8 @@ sub time_out_pc92_routes
                                        push @rdel, $n->del($_);
                                }
                        }
+               } else {
+                       dbg("ROUTE: obscount on $n->{call} now $o") if isdbg('route');
                }
        }
        for (@rdel) {
index 241b7c3a4b316b33e229f8f13004e4bcba0a305d..f0dd2760765f3fc6dc0e0a734d935681cd57504e 100644 (file)
@@ -1458,6 +1458,8 @@ sub handle_92
        $parent->do_pc92(1);
        $parent->via_pc92(1);
        $parent->reset_obs;
+       dbg("ROUTE: reset obscount on $pcall now " . $parent->obscount) if isdbg('route');
+
 
        if (@ent) {
 
@@ -1481,7 +1483,10 @@ sub handle_92
                                        dbg("PCPROT: no previous C or A for this external node received, ignored") if isdbg('chanerr');
                                        return;
                                }
-                               my $parent = check_pc9x_t($call, $t, 92) || return;
+                               $parent = check_pc9x_t($call, $t, 92) || return;
+                               $parent->via_pc92(1);
+                               $parent->reset_obs;
+                               dbg("ROUTE: reset obscount on $pcall now " . $parent->obscount) if isdbg('route');
                        }
                } else {
                        dbg("PCPROT: must be mycall or external node as first entry, ignored") if isdbg('chanerr');
@@ -1490,8 +1495,6 @@ sub handle_92
                $parent->here(Route::here($here));
                $parent->version($version) if $version && $version > $parent->version;
                $parent->build($build) if $build && $build > $parent->build;
-               $parent->via_pc92(1);
-               $parent->reset_obs;
                shift @ent;
        }