fix dx and import_cmd problems
[spider.git] / perl / DXProt.pm
index 92a36d1ee826b192f8c699e247c33755a9e7b16a..3c2311404065fbcbbf026e17dc5c86da4acbd5e2 100644 (file)
@@ -795,20 +795,15 @@ sub send_chat
        # send it if it isn't the except list and isn't isolated and still has a hop count
        # taking into account filtering and so on
        foreach $dxchan (@dxchan) {
-               my $is_ak1a = $dxchan->is_ak1a;
-
                if ($dxchan->is_node) {
                        next if $dxchan == $main::me;
                        next if $dxchan == $self;
-                       next if $from_pc9x && $dxchan->{do_pc9x};
-                       next unless $dxchan->is_spider || $is_ak1a;
+                       next if $from_pc9x && $dxchan->do_pc9x;
+                       next unless $dxchan->is_spider && $dxchan->do_pc9x;
                        next if $target eq 'LOCAL';
-                       if (!$ak1a_line && $is_ak1a) {
-                               $ak1a_line = pc12($_[0], $text, $_[1], "$target.LST");
-                       }
                }
 
-               $dxchan->chat($is_ak1a ? $ak1a_line : $line, $self->{isolate}, $target, $_[1],
+               $dxchan->chat($line, $self->{isolate}, $target, $_[1],
                                          $text, @_, $self->{call}, @a[0..2], @b[0..2]);
        }
 }
@@ -960,7 +955,7 @@ sub broadcast_pc92_update
 
        my $nref = Route::Node::get($call);
        unless ($nref) {
-               dbg("ERROR: broadcast_pc92_update - Route::Node $call disappeared");
+               cluck("ERROR: broadcast_pc92_update - Route::Node $call disappeared");
                return;
        }
        my $l = $nref->last_PC92C(gen_my_pc92_config($nref));
@@ -978,7 +973,7 @@ sub broadcast_pc92_keepalive
 
        my $nref = Route::Node::get($call);
        unless ($nref) {
-               dbg("ERROR: broadcast_pc92_keepalive - Route::Node $call disappeared");
+               cluck("ERROR: broadcast_pc92_keepalive - Route::Node $call disappeared");
                return;
        }
        my $l = pc92k($nref);
@@ -1116,9 +1111,19 @@ sub process_rcmd
        my ($self, $tonode, $fromnode, $user, $cmd) = @_;
        if ($tonode eq $main::mycall) {
                my $ref = DXUser::get_current($fromnode);
+               unless ($ref && UNIVERSAL::isa($ref, 'DXUser')) {
+                       dbg("DXProt process_rcmd: user $fromnode isn't a reference (check user_asc and tell G1TLH)"); 
+                       $self->send_rcmd_reply($main::mycall, $fromnode, $user, "sorry...!");
+                       return;
+               }
                my $cref = Route::Node::get($fromnode);
+               unless ($cref && UNIVERSAL::isa($cref, 'Route')) {
+                       dbg("DXProt process_rcmd: Route $fromnode isn't a reference (tell G1TLH)"); 
+                       $self->send_rcmd_reply($main::mycall, $fromnode, $user, "sorry...!");
+                       return;
+               }
                Log('rcmd', 'in', ($ref->{priv}||0), $fromnode, $cmd);
-               if ($cmd !~ /^\s*rcmd/i && $cref && $ref && $ref->homenode && $cref->call eq $ref->homenode) { # not allowed to relay RCMDS!
+               if ($cmd !~ /^\s*rcmd/i && $ref->homenode && $cref->call eq $ref->homenode) { # not allowed to relay RCMDS!
                        if ($ref->{priv}) {             # you have to have SOME privilege, the commands have further filtering
                                $self->{remotecmd} = 1; # for the benefit of any command that needs to know
                                my $oldpriv = $self->{priv};