fix here
[spider.git] / perl / DXProt.pm
index 612e59b6c93e62fbefa1a52a6dc4823ed5e001a1..1d28e4024ced3cc3a71554ccd7f33aa08477b90d 100644 (file)
@@ -225,6 +225,7 @@ sub init
        $main::me->{registered} = 1;
        $main::me->{version} = 5252 + $main::version;
        $main::me->{build} = $main::build;
+       $main::me->{lastcf} = $main::me->{lasthello} = time;
 }
 
 #
@@ -238,12 +239,7 @@ sub new
        # add this node to the table, the values get filled in later
        my $pkg = shift;
        my $call = shift;
-       $main::routeroot->add($call, '5000', Route::here(1)) if $call ne $main::mycall;
-       if ($self->{call} ne $main::mycall) {
-               my $thing = Thingy::Hello->new(user=>$call);
-               $thing->broadcast($self);
-       }
-       
+       $main::routeroot->add($call, '5000', 1) if $call ne $main::mycall;
        return $self;
 }
 
@@ -313,8 +309,10 @@ sub start
        $self->state('init');
        $self->{pc50_t} = $main::systime;
 
-       my $thing = Thingy::Hello->new(origin=>$main::mycall, user=>$call);
+       # ALWAYS output the hello
+       my $thing = Thingy::Hello->new(user => $call, h => $self->{here});
        $thing->broadcast($self);
+       $self->lasthello($main::systime);
        
        # send info to all logged in thingies
        $self->tell_login('loginn');
@@ -813,7 +811,7 @@ sub handle_16
                }
                
                $r = Route::User::get($call);
-               my $flags = Route::here($here)|Route::conf($conf);
+               my $flags = $here;
                
                if ($r) {
                        my $au = $r->addparent($parent);                                        
@@ -923,8 +921,8 @@ sub handle_18
 
        # record the type and version offered
        if ($_[1] =~ /DXSpider Version: (\d+\.\d+) Build: (\d+\.\d+)/) {
-               $self->version(52.51 + $1);
-               $self->user->version(52.51 + $1);
+               $self->version(0 + $1);
+               $self->user->version(0 + $1);
                $self->build(0 + $2);
                $self->user->build(0 + $2);
                unless ($self->is_spider) {
@@ -972,7 +970,7 @@ sub handle_19
        if ($origin ne $self->call) {
                my $op = Route::Node::get($origin);
                unless ($op) {
-                       $op = $parent->add($origin, 5000, Route::here(1));
+                       $op = $parent->add($origin, 5000, 1);
                        my $user = DXUser->get_current($origin);
                        if (!$user) {
                                $user = DXUser->new($origin);
@@ -1046,7 +1044,7 @@ sub handle_19
                }
 
                my $r = Route::Node::get($call);
-               my $flags = Route::here($here)|Route::conf($conf);
+               my $flags = $here;
 
                # is he under the control of the new protocol?
                if ($r && $r->np) {
@@ -1064,11 +1062,6 @@ sub handle_19
                                        next;
                                }
                        }
-                       if ($r->version ne $ver || $r->flags != $flags) {
-                               $r->version($ver);
-                               $r->flags($flags);
-                               push @rout, $r unless $ar;
-                       }
                } else {
 
                        # if he is directly connected or allowed then add him, otherwise store him up for later
@@ -1113,7 +1106,9 @@ sub handle_20
        $self->{lastping} = 0;
        my $thing = Thingy::Rt->new(user=>$self->{call});
        my $nref = Route::Node::get($self->{call});
-       $thing->broadcast if $thing->copy_pc16_data($nref);
+       $thing->copy_pc16_data($nref);
+       $thing->broadcast;
+       
        $self->lastcf($main::systime);
 }
                
@@ -1203,7 +1198,8 @@ sub handle_22
        $self->{lastping} = 0;
        my $thing = Thingy::Rt->new(user=>$self->{call});
        my $nref = Route::Node::get($self->{call});
-       $thing->broadcast if $thing->copy_pc16_data($nref);
+       $thing->copy_pc16_data($nref);
+       $thing->broadcast;
        $self->lastcf($main::systime);
 }