harden hop count decrementing.
[spider.git] / perl / DXProt.pm
index 4b32a7150c35440747ed1d8a0c8e4c8d75f0b356..18ecf1297956402ff15ee177a5d8fe08001178f9 100644 (file)
@@ -38,12 +38,6 @@ use RouteDB;
 
 use strict;
 
-use vars qw($VERSION $BRANCH);
-$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
-$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
-$main::build += $VERSION;
-$main::branch += $BRANCH;
-
 use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restime $eph_pc34_restime
                        $last_hour $last10 %eph  %pings %rcmds $ann_to_talk
                        $pingint $obscount %pc19list $chatdupeage $chatimportfn
@@ -969,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);
@@ -2170,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;