harden hop count decrementing.
[spider.git] / perl / DXProt.pm
index e7fdff9003fab04001479a32ff916e62689d045d..18ecf1297956402ff15ee177a5d8fe08001178f9 100644 (file)
@@ -963,7 +963,7 @@ sub handle_18
        $self->state('init');   
 
        # record the type and version offered
-       if ($_[1] =~ /DXSpider Version: (\d+\.\d+) Build: (\d+\.\d+)/) {
+       if ($_[1] =~ /DXSpider Version: (\d+\.\d+) Build: (\d+(?:\.\d+)?)/) {
                $self->version(53 + $1);
                $self->user->version(53 + $1);
                $self->build(0 + $2);
@@ -2164,13 +2164,14 @@ sub adjust_hops
                        return "" if defined $newhops && $newhops == 0;
                        $newhops = $ref->{default} unless $newhops;
                        return "" if defined $newhops && $newhops == 0;
-                       $newhops = $hops if !$newhops;
+                       $newhops = $hops unless $newhops;
+                       return "" unless $newhops > 0;
                        $s =~ s/\^H(\d+)(\^~?)$/\^H$newhops$2/ if $newhops;
                } else {
                        # simply decrement it
                        $hops--;
-                       return "" if !$hops;
-                       $s =~ s/\^H(\d+)(\^~?)$/\^H$hops$2/ if $hops;
+                       return "" unless $hops > 0;
+                       $s =~ s/\^H(\d+)(\^~?)$/\^H$hops$2/;
                }
        }
        return $s;