Upgrade to CPAN-1.83_66.
[p5sagit/p5-mst-13.2.git] / lib / Net / Ping.pm
index fee428c..2302b0b 100644 (file)
@@ -16,7 +16,7 @@ use Carp;
 
 @ISA = qw(Exporter);
 @EXPORT = qw(pingecho);
-$VERSION = "2.31_03";
+$VERSION = "2.31_04";
 
 sub SOL_IP { 0; };
 sub IP_TOS { 1; };
@@ -35,11 +35,11 @@ $syn_forking = 0;
 if ($^O =~ /Win32/i) {
   # Hack to avoid this Win32 spewage:
   # Your vendor has not defined POSIX macro ECONNREFUSED
-  *ECONNREFUSED = sub {10061;}; # "Unknown Error" Special Win32 Response?
-  *ENOTCONN     = sub {10057;};
-  *ECONNRESET   = sub {10054;};
-  *EINPROGRESS  = sub {10036;};
-  *EWOULDBLOCK  = sub {10035;};
+  *ECONNREFUSED = sub() {10061;}; # "Unknown Error" Special Win32 Response?
+  *ENOTCONN     = sub() {10057;};
+  *ECONNRESET   = sub() {10054;};
+  *EINPROGRESS  = sub() {10036;};
+  *EWOULDBLOCK  = sub() {10035;};
 #  $syn_forking = 1;    # XXX possibly useful in < Win2K ?
 };
 
@@ -240,6 +240,7 @@ sub mselect
        while (1) {
            $gran = $t if $gran > $t;
            my $nfound = select($_[0], $_[1], $_[2], $gran);
+           undef $nfound if $nfound == -1;
            $t -= $gran;
            return $nfound if $nfound or !defined($nfound) or $t <= 0;
 
@@ -248,7 +249,9 @@ sub mselect
        }
     }
     else {
-       return select($_[0], $_[1], $_[2], $_[3]);
+       my $nfound = select($_[0], $_[1], $_[2], $_[3]);
+       undef $nfound if $nfound == -1;
+       return $nfound;
     }
 }
 
@@ -454,7 +457,7 @@ sub ping_icmp
   {
     $nfound = mselect((my $rout=$rbits), undef, undef, $timeout); # Wait for packet
     $timeout = $finish_time - &time();    # Get remaining time
-    if ($nfound == -1)                    # Hmm, a strange error
+    if (!defined($nfound))                # Hmm, a strange error
     {
       $ret = undef;
       $done = 1;