more fixes
[spider.git] / perl / DXMsg.pm
index 381c4233b003fd59eb03f3c6683d0cd1ea2d2d28..3ca756894a5ea2c3ce83602bdcef7504141acb7e 100644 (file)
@@ -19,7 +19,6 @@ use DXUtil;
 use DXChannel;
 use DXUser;
 use DXM;
-use DXCluster;
 use DXProtVars;
 use DXProtout;
 use DXDebug;
@@ -102,7 +101,7 @@ sub alloc
        $self->{'read'} = shift;
        $self->{rrreq} = shift;
        $self->{gotit} = [];
-       $self->{lastt} = $main::systime;
+#      $self->{lastt} = $main::systime;
        $self->{lines} = [];
        $self->{private} = 1 if $bulltopriv && DXUser->get_current($self->{to});
     
@@ -607,16 +606,22 @@ sub queue_msg
                my $dxchan;
                if ($ref->{private}) {
                        next if $ref->{'read'};           # if it is read, it is stuck here
-                       $clref = DXCluster->get_exact($ref->{to});
-                       unless ($clref) {             # otherwise look for a homenode
-                               my $uref = DXUser->get_current($ref->{to});
-                               my $hnode =  $uref->homenode if $uref;
-                               $clref = DXCluster->get_exact($hnode) if $hnode;
-                       }
-                       if ($clref && !grep { $clref->dxchan == $_ } DXCommandmode::get_all()) {
-                               next if $clref->call eq $main::mycall;  # i.e. it lives here
+                       $clref = Route::get($ref->{to});
+#                      unless ($clref) {             # otherwise look for a homenode
+#                              my $uref = DXUser->get_current($ref->{to});
+#                              my $hnode =  $uref->homenode if $uref;
+#                              $clref = Route::Node::get($hnode) if $hnode;
+#                      }
+                       if ($clref) {
                                $dxchan = $clref->dxchan;
-                               $ref->start_msg($dxchan) if $dxchan && !get_busy($dxchan->call)  && $dxchan->state eq 'normal';
+                               if ($dxchan) {
+                                       if ($dxchan->is_node) {
+                                               next if $clref->call eq $main::mycall;  # i.e. it lives here
+                                               $ref->start_msg($dxchan) if !get_busy($dxchan->call)  && $dxchan->state eq 'normal';
+                                       }
+                               } else {
+                                       dbg('route', "Route: No dxchan for $ref->{to} " . ref($clref) );
+                               }
                        }
                }