try to make sure that local nodes take precedence over external ones

There seems to be a problem with localnodes sometimes being overridden by
data from external PC92 data. Usually (but not always) data for local
PC19 nodes being overridden by data from other PC92 with the same node
connected.

Also put in a frig for the sysop announce problem.
This commit is contained in:
Dirk Koopman 2007-07-07 11:34:28 +01:00
parent e4a8ea5a40
commit 387b0fecfd
3 changed files with 10 additions and 7 deletions

View File

@ -659,7 +659,8 @@ sub send_announce
}
}
if (AnnTalk::dup($from, $target, $_[2])) {
# the sysop ('*') thing is an attempt to minimise the damage caused by non-updated PC93 generators
if (AnnTalk::dup($from, $target, $_[2]) || ($_[3] eq '*' && AnnTalk::dup($from, 'ALL', $_[2]))) {
my $dxchan = DXChannel::get($from);
if ($self == $main::me && $dxchan && $dxchan->is_user) {
if ($dxchan->priv < 5) {

View File

@ -1560,12 +1560,14 @@ sub handle_92
dbg("PCPROT: $call looped back onto $main::mycall, ignored") if isdbg('chanerr');
return;
}
# this is only accepted from my "self".
# this also kills configs from PC92 nodes with external PC19 nodes that are also
# locally connected. Local nodes always take precedence.
if (DXChannel::get($call) && $call ne $self->{call}) {
dbg("PCPROT: locally connected node $call from other another node $self->{call}, ignored") if isdbg('chanerr');
return;
}
if ($is_extnode) {
# this is only accepted from my "self"
if (DXChannel::get($call) && $call ne $self->{call}) {
dbg("PCPROT: locally connected node config for $call from other another node $self->{call}, ignored") if isdbg('chanerr');
return;
}
# reparent to external node (note that we must have received a 'C' or 'A' record
# from the true parent node for this external before we get one for the this node
unless ($parent = Route::Node::get($call)) {

View File

@ -11,6 +11,6 @@ use vars qw($version $subversion $build);
$version = '1.54';
$subversion = '0';
$build = '106';
$build = '107';
1;