Changed the checking of PC19/21 that it doesn't alter the wrong node
authorminima <minima>
Sun, 2 Dec 2001 21:58:11 +0000 (21:58 +0000)
committerminima <minima>
Sun, 2 Dec 2001 21:58:11 +0000 (21:58 +0000)
Changes
perl/DXProt.pm

diff --git a/Changes b/Changes
index 23f9bbc56196e6d7d1f9eb4b95d692e893d4739c..93f2df1c86e4b9a7a8580c4f8bba6b8f632b738e 100644 (file)
--- a/Changes
+++ b/Changes
@@ -6,6 +6,7 @@ poluting the nodes table. Maybe this will make things slightly more stable.
 3. Take off rspf checks on announces and spots and allow the dupe filters
 to take the strain.
 4. Move the dupe checking AFTER the input filtering for announces and spots.
+5. Changed the checking of PC19/21 that it doesn't alter the wrong node
 26Nov01=======================================================================
 1. Make changes to the installation manual to show making the client before
 actually trying to use it!  Thanks to oz1lqh.  Also add a line for SuSE
index bd34278f6485310d5c928f410978c43813ae6f17..ec18e19f499f4298921d127909f01ab6644c14fe 100644 (file)
@@ -745,6 +745,13 @@ sub normal
                                next if length $call < 3; # min 3 letter callsigns
                                next if $call eq $main::mycall;
 
+                               # check that this PC19 isn't trying to alter the wrong dxchan
+                               my $dxchan = DXChannel->get($call);
+                               if ($dxchan && $dxchan != $self) {
+                                       dbg("PCPROT: PC19 from $self->{call} trying to alter wrong locally connected $call, ignored!") if isdbg('chanerr');
+                                       return;
+                               }
+
                                # update it if required
                                my $r = Route::Node::get($call);
                                my $flags = Route::here($here)|Route::conf($conf);
@@ -835,8 +842,8 @@ sub normal
                                my $node = Route::Node::get($call);
                                if ($node) {
 
-                                       my $dxchan = $node->dxchan;
-                                       if ($dxchan && $dxchan ne $self) {
+                                       my $dxchan = DXChannel->get($call);
+                                       if ($dxchan && $dxchan != $self) {
                                                dbg("PCPROT: PC21 from $self->{call} trying to alter locally connected $call, ignored!") if isdbg('chanerr');
                                                return;
                                        }