X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtHandle.pm;h=c4f31232ea0ce2537d6b0bc8ee0f395f74b8399f;hb=766014807e2521cc60a219c6eda5b49d13ffc70f;hp=60040e4d525b527732abc578e0724462868e1325;hpb=7dd07d0e32e95c4dc1ada18c92d3b5cce5c4d128;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index 60040e4d..c4f31232 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -49,7 +49,7 @@ use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restim $eph_pc15_restime $pc9x_past_age $pc9x_dupe_age $pc10_dupe_age $pc92_slug_changes $last_pc92_slug $pc92Ain $pc92Cin $pc92Din $pc92Kin $pc9x_time_tolerance - $pc92filterdef $senderverify $pc11_dwell_time $pc11_extract_route $pc92_ad_enabled $pc92c_ipaddr_enable + $pc92filterdef $senderverify $pc11_dwell_time $pc11_extract_route $pc92_ad_enabled $pc92c_ipaddr_enabled ); $pc9x_dupe_age = 60; # catch loops of circular (usually) D records @@ -863,9 +863,11 @@ sub handle_18 $self->state('init'); my $parent = Route::Node::get($self->{call}); - + + my ($software, $version, $build) = (undef, 0, 0); + # record the type and version offered - if (my ($software, $version) = $pc->[1] =~ /(DXSpider|CC\s*Cluster)\s+Version: (\d+(?:\.\d+)?)/i) { + if (($software, $version) = $pc->[1] =~ /(DXSpider|CC\s*Cluster)\s+Version: (\d+(?:\.\d+)?)/i) { $version += 0; $version += 53 if $version < 6; $self->{version} = $version; @@ -885,7 +887,7 @@ sub handle_18 $self->sort('S'); } # $self->{handle_xml}++ if DXXml::available() && $pc->[1] =~ /\bxml/; - } elsif (my ($software, $version, $build) = $pc->[1] =~ /(AR-Cluster)\s+Version:\s+(\d+\.\d+).?(\d+\.\d+)?/) { + } elsif (($software, $version, $build) = $pc->[1] =~ /(AR-Cluster)\s+Version:\s+(\d+\.\d+).?(\d+\.\d+)?/) { dbg("$self->{call} = $software version $version build $build"); $self->{version} = $version; $self->user->version($version); @@ -2321,8 +2323,11 @@ sub handle_92 $self->route_pc16($pcall, undef, $parent, @pc16) if @pc16; } - # broadcast it if we get here - $self->broadcast_route_pc9x($pcall, undef, $line, 0) unless !$pc92_ad_enabled && ($sort eq 'A' || $sort eq 'D'); + # broadcast it if we get here (but not if it's an A or D record and pc92_ad_enabled isn't set; + if ($sort eq 'A' || $sort eq 'D') { + return unless $pc92_ad_enabled; + } + $self->broadcast_route_pc9x($pcall, undef, $line, 0); } # get all the routes for a thing, bearing in mind that the thing (e.g. a user) @@ -2512,6 +2517,7 @@ sub handle_default } } +# does what it says on the tin.. sub populate_routing_table { my ($self, $node, $user, $ip) = @_;