fix here
authorminima <minima>
Thu, 24 Feb 2005 14:25:49 +0000 (14:25 +0000)
committerminima <minima>
Thu, 24 Feb 2005 14:25:49 +0000 (14:25 +0000)
perl/DXProt.pm
perl/Route.pm
perl/Route/Node.pm
perl/Thingy/Rt.pm

index 595cfae8246a64d4d7713bb2433a5bdb3940a54c..1d28e4024ced3cc3a71554ccd7f33aa08477b90d 100644 (file)
@@ -1062,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
index 0676139aa033647f434bc557a6c6a4cdfc179c82..03dd1f43776a4ceba321740f1c5247a89f036532 100644 (file)
@@ -60,7 +60,9 @@ $filterdef = bless ([
 
 sub new
 {
-       my ($pkg, $call) = @_;
+       my $pkg = shift;
+       my $call = shift;
+
        $pkg = ref $pkg if ref $pkg;
 
        my $self = bless {call => $call}, $pkg;
index d46733bbcdf295e05aafd649e34262e688fd904a..bd69d3d77290947af5089a73484ebc339cddbfe1 100644 (file)
@@ -58,7 +58,7 @@ sub max
 # object with that callsign. The upper layers are expected to do something
 # sensible with this!
 #
-# called as $parent->add(call, dxchan, version, flags) 
+# called as $parent->add(call, version, flags) 
 #
 
 sub add
@@ -66,13 +66,21 @@ sub add
        my $parent = shift;
        my $call = uc shift;
        confess "Route::add trying to add $call to myself" if $call eq $parent->{call};
+       my $version = shift;
+       my $here = shift;
+       
        my $self = get($call);
        if ($self) {
                $self->_addparent($parent);
                $parent->_addnode($self);
+               if ($self->{version} != $version || $self->{flags} != $here) {
+                       $self->{version} = $version;
+                       $self->{flags} = $here;
+                       return $self;
+               }
                return undef;
        }
-       $self = $parent->new($call, @_);
+       $self = $parent->new($call, $version, $here);
        $parent->_addnode($self);
        return $self;
 }
index bdc4bf41de4415d27d5b05517d34de5ecf1f1643..89c8452ea56927a9d05bef9414efe45b870a2b4f 100644 (file)
@@ -52,7 +52,9 @@ sub gen_Aranea
 sub from_Aranea
 {
        my $thing = shift;
-       return unless $thing;
+       $thing->{u} ||= '';
+       $thing->{n} ||= '';
+       $thing->{a} ||= '';
        return $thing;
 }
 
@@ -89,20 +91,20 @@ sub handle_cf
        }
 
        # do nodes
-       my ($del, $add);
        my %in;
        if ($thing->{n}) {
-               %in = (map {my ($here, $call) = unpack("A1 A*", $_); ($call, $here)} split /:/, $thing->{n});
-               my ($tdel, $tadd) = $parent->diff_nodes(keys %in);
-               $add = $tadd;
-               $del = $tdel;
+               for (split(/:/, $thing->{n})) {
+                       my ($here, $call) = unpack("A1 A*", $_); 
+                       $in{$call} = $here;
+               }
        }
        if ($thing->{a}) {
-               %in = (map {my ($here, $call) = unpack("A1 A*", $_); ($call, $here)} split /:/, $thing->{a});
-               my ($tdel, $tadd) = $parent->diff_nodes(keys %in);
-               push @$add, @$tadd;
-               push @$del, @$tdel;
+               for (split(/:/, $thing->{a})) {
+                       my ($here, $call) = unpack("A1 A*", $_); 
+                       $in{$call} = $here;
+               } 
        }
+       my ($del, $add) = $parent->diff_nodes(keys %in);
        if ($add) {
                my @pc21;
                foreach my $call (@$del) {
@@ -116,8 +118,8 @@ sub handle_cf
                my @pc19;
                foreach my $call (@$add) {
                        RouteDB::update($call, $chan_call);
-                       my $ref = Route::Node::get($call);
-                       push @pc19, $parent->add($call, 0, $in{$call}) unless $ref;
+                       my $here = $in{$call};
+                       push @pc19, $parent->add($call, 0, $here);
                }
                $thing->{pc19n} = \@pc19 if @pc19;
        }
@@ -237,7 +239,7 @@ sub copy_pc16_data
        $thing->{'s'} = 'cf';
 
        my @u = map {Route::User::get($_)} $uref->users;
-       $thing->{ausers} = \@u;
+       $thing->{ausers} = \@u if @u;
        return @u;
 }