fix SSID ambiguity on spotter in DX
[spider.git] / perl / Thingy.pm
index 308e80c3d67c3dd13e72576c09f7bceead959887..2361561af527edc43c0f474adfc1bc29236ec1a9 100644 (file)
@@ -74,7 +74,9 @@ sub send
        # before send (and line generation) things
        # function must return true to make the send happen
        $sub = "before_send_$class";
-       return unless $thing->can($sub) && $thing->$sub($dxchan);
+       if ($thing->can($sub)) {
+               return $thing->$sub($dxchan);
+       }
        
        # generate the protocol line which may (or not) be cached
        my $ref;
@@ -102,6 +104,10 @@ sub broadcast
        foreach my $dxchan (DXChannel::get_all()) {
                next if $dxchan == $main::me;
                next if grep $dxchan == $_, @_;
+               next if $dxchan->{call} eq $thing->{origin};
+               next if $thing->{user} && !$dxchan->is_user && $dxchan->{call} eq $thing->{user};
+               
+               dbg("Thingy::broadcast: sending to $dxchan->{call}") if isdbg('thing');
                $thing->send($dxchan); 
        }
 }
@@ -195,7 +201,7 @@ sub add_auth
 {
        my $thing = shift;
        my $s = $thing->{'s'} = sprintf "%X", int(rand() * 100000000);
-       my $auth = Verify->new("DXSp,$main::mycall,$s,$main::version,$main::build");
+       my $auth = Verify->new("DXSp,$main::mycall,$s,$thing->{v},$thing->{b}");
        $thing->{auth} = $auth->challenge($main::me->user->passphrase);
 }