get regex for pc9[2] right in handle_18
[spider.git] / perl / DXProtHandle.pm
index 526762e514d623b72d8c1b18ca49e09403ac205a..241b7c3a4b316b33e229f8f13004e4bcba0a305d 100644 (file)
@@ -605,9 +605,9 @@ sub handle_18
                        $self->user->put;
                        $self->sort('S');
                }
-               $self->{handle_xml}++ if DXXml::available() && $_[1] =~ /\bxml\b/;
-               my ($pc9x) = $_[1] =~ /\bpc9\[(\d+)\]\b/;
-               $self->{do_pc92}++ if (defined $pc9x && $pc9x =~ /2/) || $_[1] =~ /\bpc92\b/;
+               $self->{handle_xml}++ if DXXml::available() && $_[1] =~ /\bxml/;
+               my ($pc9x) = $_[1] =~ /\bpc9\[(\d+)\]/;
+               $self->{do_pc92}++ if defined $pc9x && $pc9x =~ /2/;
        } else {
                $self->version(50.0);
                $self->version($_[2] / 100) if $_[2] && $_[2] =~ /^\d+$/;
@@ -1470,6 +1470,11 @@ sub handle_92
                                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)) {