try to fix init problems
[spider.git] / perl / DXProt.pm
index 66d29f2fc6d99a982e915c57ec56a0cc86d7b857..152a5fe05bdb84510ae764028d57ce59106d0524 100644 (file)
@@ -789,9 +789,10 @@ sub normal
                        $ref->here($field[2]) if $ref;
                        $ref = Route::User::get($call);
                        $ref->here($field[2]) if $ref;
+                       $ref ||= Route->new($call);
                        
                        # input filter if required
-                       return unless $self->in_filter_route($ref || Route::new($call));
+                       return unless $self->in_filter_route($ref);
 
                        $self->route_pc24($ref, $field[3]) if $ref && !eph_dup($line);
                        return;
@@ -1448,7 +1449,7 @@ sub send_local_config
                # and are not themselves isolated, this to make sure that isolated nodes
         # don't appear outside of this node
                my @dxchan = grep { $_->call ne $main::mycall && $_->call ne $self->{call} } DXChannel::get_all_nodes();
-               @localnodes = map { Route::Node::get($_->{call}) or die "connot find node $_->{call}" } @dxchan if @dxchan;
+               @localnodes = map { my $r = Route::Node::get($_->{call}); $r ? $r : () } @dxchan if @dxchan;
                my @intcalls = map { $_->nodes } @localnodes if @localnodes;
                my $ref = Route::Node::get($self->{call});
                my @rnodes = $ref->nodes;
@@ -1487,7 +1488,7 @@ sub route
        # always send it down the local interface if available
        my $dxchan = DXChannel->get($call);
        unless ($dxchan) {
-               my $cl = Route::Node::get($call);
+               my $cl = Route::get($call);
                $dxchan = $cl->dxchan if $cl;
                if (ref $dxchan) {
                        if (ref $self && $dxchan eq $self) {