From: Dirk Koopman Date: Sat, 7 Jul 2007 10:34:28 +0000 (+0100) Subject: try to make sure that local nodes take precedence over external ones X-Git-Tag: 1.55~108 X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=387b0fecfd3b200cb9c6094103954c2c0ebad7c6;hp=e4a8ea5a407f640bc6e1efd6ef6b5f88f8f0980a;p=spider.git 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. --- diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 53695e51..5e967fd2 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -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) { diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index 9a4104e5..5e3f0597 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -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)) { diff --git a/perl/Version.pm b/perl/Version.pm index 82018c14..a95140f8 100644 --- a/perl/Version.pm +++ b/perl/Version.pm @@ -11,6 +11,6 @@ use vars qw($version $subversion $build); $version = '1.54'; $subversion = '0'; -$build = '106'; +$build = '107'; 1;