X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtHandle.pm;h=6ba38a430c4579bde302d0719116cc7e777dec06;hb=bac92875e5f1703041986379c9c0d7d3588228ff;hp=6f4fbd08d92c3bca3513e7189111ede1aa982e8d;hpb=7e3729a9039462c460dae4804f40c0bd506f3423;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index 6f4fbd08..6ba38a43 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -1571,19 +1571,23 @@ sub _decode_pc92_call my $version = $part[1] || 0; my $build = $part[2] || 0; my $ip = $part[3] || ''; - - if (is_ipaddr($version)) { + + # remember that, at this stage, IPV6 addresses have : replaced by , + if (length $version > 4 && $version =~ /[,\.][\da-f]{1,4}/i) { $ip = $version; $version = 0; } $version =~ s/\D//g; + $version = 0 unless $version && $version =~ /^[0-9]+$/; $build =~ s/^0\.//; $build =~ s/\D//g; + $build = 0 unless $build && $build =~ /^[0-9]+$/; if ($ip) { $ip =~ s/,/:/g; $ip =~ s/^::ffff://i; + $ip = '' unless is_ipaddr($ip); } - dbg("$icall = '" . join("', '", $call, $is_node, $is_extnode, $here, $version, $build, $ip) . "'") if isdbg('pc92'); + dbg("'$icall' = '" . join("', '", $call, $is_node, $is_extnode, $here, $version, $build, $ip) . "'") if isdbg('pc92'); return ($call, $is_node, $is_extnode, $here, $version+0, $build+0, $ip); } @@ -1665,9 +1669,9 @@ sub _add_thingy $user->sort('S'); dbg("PCProt::_add_thingy node $call v: $version b: $build sort ($old) updated to " . $user->sort); } elsif ($user->is_spider && ($version < 3000 || ($version > 4000 && $version < 5455))) { - unless ($version == 5000 && $build == 0) { + unless ($version > 0 && $build == 0) { $user->sort('A'); - $build //= 0; + $build ||= 0; dbg("PCProt::_add_thingy node $call v: $version b: $build sort ($old) downgraded to " . $user->sort); } }