Now add files that the previous commit refered to
[spider.git] / perl / DXXml / Ping.pm
index 04f830d1b534a8d701a32289a0b5d19c2db2ba29..6088a4628b92756d946bfe4eac2c8398e2592974 100644 (file)
@@ -14,6 +14,7 @@ use DXDebug;
 use DXProt;
 use IsoTime;
 use Time::HiRes qw(gettimeofday tv_interval);
+use Route::Node;
 
 use vars qw(@ISA %pings);
 @ISA = qw(DXXml);
@@ -67,10 +68,10 @@ sub add
 
        push @$ref, $self;
        $pings{$to} = $ref;
-       my $u = DXUser->get_current($to);
+       my $u = DXUser::get_current($to);
        if ($u) {
                $u->lastping(($via || $from), $main::systime);
-               $u->put;
+               $u->put unless $dxchan->{_nospawn};
        }
 }
 
@@ -115,6 +116,12 @@ sub handle_ping_reply
                                        $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});
                } 
@@ -129,11 +136,12 @@ sub handle_ping_reply
 sub _handle_believe
 {
        my ($from, $via) = @_;
-       
-       my $user = DXUser->get_current($from);
+
+       my $dxchan = DXChannel::get($from);
+       my $user = $dxchan->user || DXUser::get($from);
        if ($user) {
                $user->set_believe($via);
-               $user->put;
+               $user->put unless $dxchan->{_nospawn};
        }
 }
 1;