sub new
{
my $self = DXChannel::alloc(@_);
+
+ # routing, this must go out here to prevent race condx
+ my $pkg = shift;
+ my $call = shift;
+ my @rout = $main::routeroot->add_user($call, Route::here($self->{here}));
+ DXProt::route_pc16($DXProt::me, $main::routeroot, @rout) if @rout;
+
return $self;
}
$DXProt::me->conn($self->conn) if $call eq $main::myalias; # send all output for mycall to myalias
- # routing version
- my @rout = $main::routeroot->add_user($call, Route::here($self->{here}));
- dbg('route', "B/C PC16 on $main::mycall for: $call") if @rout;
- DXProt::route_pc16($DXProt::me, $main::routeroot, @rout) if @rout;
Log('DXCommand', "$call connected");
# send prompts and things
sub new
{
my $self = DXChannel::alloc(@_);
+
+ # add this node to the table, the values get filled in later
+ my $pkg = shift;
+ my $call = shift;
+ $main::routeroot->add($call) if $call ne $main::mycall;
+
return $self;
}
# send info to all logged in thingies
$self->tell_login('loginn');
- # add this node to the table, the values get filled in later
- $main::routeroot->add($call);
-
Log('DXProt', "$call connected");
}
# 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}) } @dxchan if @dxchan;
+ @localnodes = map { Route::Node::get($_->{call}) or die "connot find node $_->{call}" } @dxchan if @dxchan;
my @intcalls = map { $_->nodes } @localnodes if @localnodes;
my $ref = Route::Node::get($self->{call});
my @rnodes = $ref->nodes;