projects
/
spider.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b7cacf8
)
make sure that remote config records can't either mess with me or my
author
minima
<minima>
Sun, 14 Jan 2007 19:52:25 +0000
(19:52 +0000)
committer
minima
<minima>
Sun, 14 Jan 2007 19:52:25 +0000
(19:52 +0000)
locally connected nodes.
perl/DXProtHandle.pm
patch
|
blob
|
history
diff --git
a/perl/DXProtHandle.pm
b/perl/DXProtHandle.pm
index add5c521df7a541895a66010c1aa1cb7746df3e3..526762e514d623b72d8c1b18ca49e09403ac205a 100644
(file)
--- a/
perl/DXProtHandle.pm
+++ b/
perl/DXProtHandle.pm
@@
-1359,7
+1359,7
@@
sub _add_thingy
{
my $parent = shift;
my $s = shift;
{
my $parent = shift;
my $s = shift;
- my ($call, $is_node, $is_extnode, $here, $version, $build) =
_decode_pc92_call($s)
;
+ my ($call, $is_node, $is_extnode, $here, $version, $build) =
@$s
;
my @rout;
if ($call) {
my @rout;
if ($call) {
@@
-1376,7
+1376,7
@@
sub _del_thingy
{
my $parent = shift;
my $s = shift;
{
my $parent = shift;
my $s = shift;
- my ($call, $is_node, $is_extnode, $here, $version, $build) =
_decode_pc92_call($s)
;
+ my ($call, $is_node, $is_extnode, $here, $version, $build) =
@$s
;
my @rout;
if ($call) {
if ($is_node) {
my @rout;
if ($call) {
if ($is_node) {
@@
-1445,7
+1445,7
@@
sub handle_92
my $t = $_[2];
my $sort = $_[3];
my $t = $_[2];
my $sort = $_[3];
- my @ent = grep {$_ && /^[0-7]/} @_[4 .. $#_];
+ my @ent =
map {[ _decode_pc92_call($_) ]}
grep {$_ && /^[0-7]/} @_[4 .. $#_];
if ($pcall eq $main::mycall) {
dbg("PCPROT: looped back, ignored") if isdbg('chanerr');
if ($pcall eq $main::mycall) {
dbg("PCPROT: looped back, ignored") if isdbg('chanerr');
@@
-1463,7
+1463,7
@@
sub handle_92
# look at the first one which will always be a node of some sort
# and update any information that needs to be done.
# look at the first one which will always be a node of some sort
# and update any information that needs to be done.
- my ($call, $is_node, $is_extnode, $here, $version, $build) =
_decode_pc92_call($ent[0]);
+ my ($call, $is_node, $is_extnode, $here, $version, $build) =
@{$ent[0]};
if ($call && $is_node) {
if ($call eq $main::mycall) {
dbg("PCPROT: looped back on node entry, ignored") if isdbg('chanerr');
if ($call && $is_node) {
if ($call eq $main::mycall) {
dbg("PCPROT: looped back on node entry, ignored") if isdbg('chanerr');
@@
-1490,25
+1490,36
@@
sub handle_92
shift @ent;
}
shift @ent;
}
+ # do a pass through removing any references to either locally connected nodes or mycall
+ my @nent;
+ for (@ent) {
+ next unless $_;
+ if ($_->[0] eq $main::mycall || DXChannel::get($_->[0])) {
+ dbg("PCPROT: $_->[0] refers to locally connected node, ignored") if isdbg('chanerr');
+ next;
+ }
+ push @nent, $_;
+ }
+
my (@radd, @rdel);
if ($sort eq 'A') {
my (@radd, @rdel);
if ($sort eq 'A') {
- for (@ent) {
+ for (@
n
ent) {
push @radd, _add_thingy($parent, $_);
}
} elsif ($sort eq 'D') {
push @radd, _add_thingy($parent, $_);
}
} elsif ($sort eq 'D') {
- for (@ent) {
+ for (@
n
ent) {
push @rdel, _del_thingy($parent, $_);
}
} elsif ($sort eq 'C') {
my (@nodes, @users);
push @rdel, _del_thingy($parent, $_);
}
} elsif ($sort eq 'C') {
my (@nodes, @users);
- for
(@
ent) {
- my ($call, $is_node, $is_extnode, $here, $version, $build) = _decode_pc92_call($_);
- if ($
call
) {
- if ($
is_node
) {
- push @nodes, $
call
;
+ for
each my $r (@n
ent) {
+# my ($call, $is_node, $is_extnode, $here, $version, $build) = _decode_pc92_call($_);
+ if ($
r->[0]
) {
+ if ($
r->[1]
) {
+ push @nodes, $
r->[0]
;
} else {
} else {
- push @users, $
call
;
+ push @users, $
r->[0]
;
}
} else {
dbg("DXPROT: pc92 call entry '$_' not decoded, ignored") if isdbg('chanerr');
}
} else {
dbg("DXPROT: pc92 call entry '$_' not decoded, ignored") if isdbg('chanerr');
@@
-1517,11
+1528,11
@@
sub handle_92
my ($dnodes, $dusers, $nnodes, $nusers) = $parent->calc_config_changes(\@nodes, \@users);
my ($dnodes, $dusers, $nnodes, $nusers) = $parent->calc_config_changes(\@nodes, \@users);
- for
(@
ent) {
- my
($call, $is_node, $is_extnode, $here, $version, $build) = _decode_pc92_call($_)
;
+ for
each my $r (@n
ent) {
+ my
$call = $r->[0]
;
if ($call) {
if ($call) {
- push @radd,_add_thingy($parent, $
_
) if grep $call eq $_, (@$nnodes, @$nusers);
- push @rdel,_del_thingy($parent, $
_
) if grep $call eq $_, (@$dnodes, @$dusers);
+ push @radd,_add_thingy($parent, $
r
) if grep $call eq $_, (@$nnodes, @$nusers);
+ push @rdel,_del_thingy($parent, $
r
) if grep $call eq $_, (@$dnodes, @$dusers);
}
}
} else {
}
}
} else {