try to get the origin routing correct for non aranea pings
authorminima <minima>
Wed, 9 Mar 2005 10:26:52 +0000 (10:26 +0000)
committerminima <minima>
Wed, 9 Mar 2005 10:26:52 +0000 (10:26 +0000)
perl/Thingy.pm
perl/Thingy/Ping.pm

index efacdbb3219f0864a587098e841229abd404ee8a..24c8b98f78c72d5a682e24b3e3e16cf2c2039036 100644 (file)
@@ -113,7 +113,8 @@ sub broadcast
        dbg("Thingy::broadcast: " . $thing->ascii) if isdbg('thing'); 
 
        my @dxchan;
-       my $to ||= $thing->{touser};
+       my $to ||= $thing->{route}; 
+       $to     ||= $thing->{touser};
        $to ||= $thing->{group};
        if ($to && is_callsign($to) && (my $ref = Route::get($to))) {
                dbg("Thingy::broadcast: routing for $to") if isdbg('thing');
index 88e68a851a1107bd53f75719cf01930d859c0333..d87ad4567a891801b54ab2a6acd292759b92b094 100644 (file)
@@ -31,7 +31,7 @@ sub gen_Aranea
 {
        my $thing = shift;
        unless ($thing->{Aranea}) {
-               $thing->{Aranea} = Aranea::genmsg($thing, qw(id out));
+               $thing->{Aranea} = Aranea::genmsg($thing, qw(id out o));
        }
        return $thing->{Aranea};
 }
@@ -53,10 +53,12 @@ sub gen_DXProt
                # {user} as well as a true user and also it may not
                # have originated here.
 
-               my $from = $thing->{user} if Route::Node::get($thing->{user});
+               my $from = $thing->{o};
+           $from ||= $thing->{user} if Route::Node::get($thing->{user});
                $from ||= $thing->{origin};
                my $to = $thing->{touser} if Route::Node::get($thing->{touser});
                $to ||= $thing->{group};
+
                
                $thing->{DXProt} = DXProt::pc51($to, $from, $thing->{out});
        }
@@ -132,6 +134,7 @@ sub handle
                        }
                }
        } else {
+               $thing->{route} = $thing->{o} if $thing->{o};
                $thing->broadcast($dxchan);
        }
 }