Simply reset do_pc9x on failure to initialise
authorDirk Koopman <djk@tobit.co.uk>
Sat, 23 Jun 2007 21:12:22 +0000 (22:12 +0100)
committerDirk Koopman <djk@tobit.co.uk>
Sat, 23 Jun 2007 21:12:22 +0000 (22:12 +0100)
perl/DXProt.pm
perl/DXProtHandle.pm
perl/Version.pm

index c04e4a1fdf84bd93e72dcec63883f2736553958a..345b61cb42f6965a121572662a4c9239b1983f0f 100644 (file)
@@ -771,9 +771,11 @@ sub send_local_config
        my @remotenodes;
 
        if ($self->{isolate}) {
+               dbg("send_local_config: isolated");
                @localnodes = ( $main::routeroot );
                $self->send_route($main::mycall, \&pc19, 1, $main::routeroot);
        } elsif ($self->{do_pc9x}) {
+               dbg("send_local_config: doing pc9x");
                my $node = Route::Node::get($self->{call});
                $self->send_last_pc92_config($main::routeroot);
                $self->send(pc92a($main::routeroot, $node)) unless $main::routeroot->last_PC92C =~ /$self->{call}/;
@@ -782,6 +784,8 @@ sub send_local_config
                # and are not themselves isolated, this to make sure that isolated nodes
                # don't appear outside of this node
 
+               dbg("send_local_config: traditional");
+
                # send locally connected nodes
                my @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} } DXChannel::get_all_nodes();
                @localnodes = map { my $r = Route::Node::get($_->{call}); $r ? $r : () } @dxchan if @dxchan;
@@ -833,46 +837,10 @@ sub gen_my_pc92_config
 sub gen_pc92_update
 {
        my $self = shift;
-       my $with_pc92_nodes = shift;
-       my $node;
-       my @lines;
-       my @dxchan;
-       my @localnodes;
-
-       dbg('ROUTE: DXProt::gen_pc92_update start') if isdbg('routelow');
 
        # send 'my' configuration for all channels
-       push @lines, gen_my_pc92_config($main::routeroot);
-
-#      if ($with_pc92_nodes) {
-               # send out the configuration of all the directly connected PC92 nodes with current configuration
-               # but with the dates that the last config came in with.
-#              @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} && $_->{do_pc9x} } DXChannel::get_all_nodes();
-#              dbg("ROUTE: pc92 dxchan: " . join(',', map{$_->{call}} @dxchan)) if isdbg('routelow');
-#              @localnodes = map { my $r = Route::Node::get($_->{call}); $r ? $r : () } @dxchan;
-#              dbg("ROUTE: pc92 localnodes: " . join(',', map{$_->{call}} @localnodes)) if isdbg('routelow');
-#              foreach $node (@localnodes) {
-#                      if ($node && $node->lastid->{92}) {
-#                              my @rout = map {my $r = Route::get($_); $r ? ($r) : ()} $node->nodes, $node->users;
-#                              push @lines, gen_pc92_with_time($node->call, 'C', $node->lastid->{92}, @rout);
-#                      }
-#              }
-#      }
-
-       # send the configuration of all the directly connected 'external' nodes that don't handle PC92
-       # out with the 'external' marker on the first node.
-#      @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} && !$_->{do_pc9x} } DXChannel::get_all_nodes();
-#      dbg("ROUTE: non pc92 dxchan: " . join(',', map{$_->{call}} @dxchan)) if isdbg('routelow');
-#      @localnodes = map { my $r = Route::Node::get($_->{call}); $r ? $r : () } @dxchan;
-#      dbg("ROUTE: non pc92 localnodes: " . join(',', map{$_->{call}} @localnodes)) if isdbg('routelow');
-#      foreach $node (@localnodes) {
-#              if ($node) {
-#                      push @lines, gen_my_pc92_config($node);
-#              }
-#      }
-
-       dbg('ROUTE: DXProt::gen_pc92_update end with ' . scalar @lines . ' lines') if isdbg('routelow');
-       return @lines;
+       my $l = gen_my_pc92_config($main::routeroot);
+       return $l;
 }
 
 
index b5a8bcdcda89c0a085b9c21452cc012140f245d2..99eb71d27464c27299708a1a2590390ecbd84a01 100644 (file)
@@ -598,24 +598,29 @@ sub handle_18
        my $parent = Route::Node::get($self->{call});
 
        # record the type and version offered
-       if ($_[1] =~ /DXSpider Version: (\d+\.\d+) Build: (\d+(?:\.\d+)?)/) {
+       if ($_[1] =~ /DXSpider Version: (\d+\.\d+)/) {
                $self->{version} = 53 + $1;
                $self->user->version(53 + $1);
                $parent->version(0 + $1);
-               $self->{build} = 0 + $2;
-               $self->user->build(0 + $2);
-               $parent->build(0 + $2);
+               dbg("DXSpider version $1");
+               my ($build) = $_[1] =~ /Build: (\d+(?:\.\d+)?)/;
+               $self->{build} = 0 + $build;
+               $self->user->build(0 + $build);
+               $parent->build(0 + $build);
+               dbg("DXSpider build $build");
                unless ($self->is_spider) {
+                       dbg("Change U " . $self->user->sort . " C $self->{sort} -> S");
                        $self->user->sort('S');
                        $self->user->put;
                        $self->sort('S');
                }
-               $self->{handle_xml}++ if DXXml::available() && $_[1] =~ /\bxml/;
+#              $self->{handle_xml}++ if DXXml::available() && $_[1] =~ /\bxml/;
                if ($_[1] =~ /\bpc9x/) {
                        $self->{do_pc9x} = 1;
                        dbg("Do px9x set on $self->{call}");
                }
        } else {
+               dbg("Unknown software");
                $self->version(50.0);
                $self->version($_[2] / 100) if $_[2] && $_[2] =~ /^\d+$/;
                $self->user->version($self->version);
@@ -787,10 +792,8 @@ sub handle_20
        my $origin = shift;
 
        if ($self->{do_pc9x} && $self->{state} ne 'init92') {
-               dbg("PCPROT: disconnecting because login call not sent in any pc92") if isdbg('chanerr');
-               $self->send("**** You logged in with $self->{call} but that is NOT your \$mycall");
-               $self->disconnect;
-               return;
+               $self->send("Reseting to oldstyle routing because login call not sent in any pc92");
+               $self->{do_pc9x} = 0;
        }
        $self->send_local_config;
        $self->send(pc22());
@@ -878,10 +881,8 @@ sub handle_22
 
        if ($self->{do_pc9x}) {
                if ($self->{state} ne 'init92') {
-                       dbg("PCPROT: disconnecting because login call not sent in any pc92") if isdbg('chanerr');
-                       $self->send("**** You logged in with $self->{call} but that is NOT your \$mycall");
-                       $self->disconnect;
-                       return;
+                       $self->send("Reseting to oldstyle routing because login call not sent in any pc92");
+                       $self->{do_pc9x} = 0;
                }
        }
        $self->{lastping} = 0;
index 7f7313d82a8a69661c3c387950a0d3e4ff36c177..af05086e56cabfbabb96e25ad7229fc533d20c09 100644 (file)
@@ -11,6 +11,6 @@ use vars qw($version $subversion $build);
 
 $version = '1.54';
 $subversion = '0';
-$build = '68';
+$build = '70';
 
 1;