From 90b87fdbe4bb4f904e89939640aa7764a69e5616 Mon Sep 17 00:00:00 2001 From: Dirk Koopman Date: Sat, 23 Jun 2007 22:12:22 +0100 Subject: [PATCH 1/1] Simply reset do_pc9x on failure to initialise --- perl/DXProt.pm | 44 ++++++-------------------------------------- perl/DXProtHandle.pm | 27 ++++++++++++++------------- perl/Version.pm | 2 +- 3 files changed, 21 insertions(+), 52 deletions(-) diff --git a/perl/DXProt.pm b/perl/DXProt.pm index c04e4a1f..345b61cb 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -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; } diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index b5a8bcdc..99eb71d2 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -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; diff --git a/perl/Version.pm b/perl/Version.pm index 7f7313d8..af05086e 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 = '68'; +$build = '70'; 1; -- 2.43.0