allow blank in field 4 of PC10
[spider.git] / perl / DXProt.pm
index 26d1b169854b585ee1cd94a136da525cb1ff47d7..e2c1dae4221ebdc9cceca1ce97c14b09d11637f4 100644 (file)
@@ -51,7 +51,7 @@ $baddxfn = "$main::data/baddx.pl";
 
 @checklist = 
 (
- [ qw(c c m p bc c) ],                 # pc10
+ [ qw(c c m bp bc c) ],                        # pc10
  [ qw(f m d t m c c h) ],              # pc11
  [ qw(c bc m bp bm p h) ],             # pc12
  [ qw(c h) ],                                  # 
@@ -239,7 +239,7 @@ sub start
 
        # send initialisation string
        unless ($self->{outbound}) {
-               $self->send(pc38()) if DXNode->get_all();
+#              $self->send(pc38()) if DXNode->get_all();
                $self->send(pc18());
                $self->{lastping} = $main::systime;
        } else {
@@ -617,12 +617,16 @@ sub normal
                        if ($call ne $main::mycall) { # don't allow malicious buggers to disconnect me!
                                my $node = DXCluster->get_exact($call);
                                if ($node) {
+                                       if ($call eq $self->{call}) {
+                                               dbg('chan', "LOOP: Trying to disconnect myself with PC21");
+                                               return;
+                                       } 
                                        if ($node->dxchan != $self) {
                                                dbg('chan', "LOOP: $call come in on wrong channel");
                                                return;
                                        }
                                        my $dxchan;
-                                       if (($dxchan = DXChannel->get($call)) && $dxchan != $self) {
+                                       if ($dxchan = DXChannel->get($call)) {
                                                dbg('chan', "LOOP: $call connected locally");
                                                return;
                                        }