projects
/
spider.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
f4a1d40
)
fixed race condx by issuing PC16/19 at the earliest opportunity
author
minima
<minima>
Sat, 9 Jun 2001 04:12:43 +0000
(
04:12
+0000)
committer
minima
<minima>
Sat, 9 Jun 2001 04:12:43 +0000
(
04:12
+0000)
perl/DXCommandmode.pm
patch
|
blob
|
history
perl/DXProt.pm
patch
|
blob
|
history
diff --git
a/perl/DXCommandmode.pm
b/perl/DXCommandmode.pm
index 8c7b67fda32f11a5f64c8dd15e2a0975ea83cc36..9c6b73af7eed9522f6a3ca7a4404e2b27e0e20b3 100644
(file)
--- a/
perl/DXCommandmode.pm
+++ b/
perl/DXCommandmode.pm
@@
-48,6
+48,13
@@
$maxerrors = 20; # the maximum number of concurrent errors allowed before dis
sub new
{
my $self = DXChannel::alloc(@_);
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;
}
return $self;
}
@@
-100,10
+107,6
@@
sub start
$DXProt::me->conn($self->conn) if $call eq $main::myalias; # send all output for mycall to myalias
$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
Log('DXCommand', "$call connected");
# send prompts and things
diff --git
a/perl/DXProt.pm
b/perl/DXProt.pm
index 7df2ce240e8bfe1045a1319610d3fab9c719fafd..a1f909e752511fec43e175726d37a3afa8121b87 100644
(file)
--- a/
perl/DXProt.pm
+++ b/
perl/DXProt.pm
@@
-191,6
+191,12
@@
sub init
sub new
{
my $self = DXChannel::alloc(@_);
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;
}
return $self;
}
@@
-252,9
+258,6
@@
sub start
# send info to all logged in thingies
$self->tell_login('loginn');
# 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");
}
Log('DXProt', "$call connected");
}
@@
-1379,7
+1382,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();
# 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;
my @intcalls = map { $_->nodes } @localnodes if @localnodes;
my $ref = Route::Node::get($self->{call});
my @rnodes = $ref->nodes;