When verifying that test harness's SSH and SOCKS servers have been
authorYang Tse <yangsita@gmail.com>
Fri, 11 Jan 2008 20:17:33 +0000 (20:17 +0000)
committerYang Tse <yangsita@gmail.com>
Fri, 11 Jan 2008 20:17:33 +0000 (20:17 +0000)
started check also that the process is actually alive, since they
could have died once the pidfile was written out

tests/runtests.pl

index 3e806ac..f3e1905 100755 (executable)
@@ -661,14 +661,20 @@ sub verifyftp {
 
 sub verifyssh {
     my ($proto, $ip, $port) = @_;
-    my $pid;
+    my $pid = 0;
     if(open(FILE, "<$SSHPIDFILE")) {
         $pid=0+<FILE>;
         close(FILE);
-        logmsg "TRACESSH:verifyssh: pid from $SSHPIDFILE is $pid\n";
     }
-    else {
-        logmsg "TRACESSH:verifyssh: cannot open file $SSHPIDFILE\n";
+    if($pid > 0) {
+        # if we have a pid it is actually our ssh server,
+        # since runsshserver() unlinks previous pidfile
+        if(!kill(0, $pid) {
+            logmsg "RUN: SSH server has died after starting up\n";
+            checkdied($pid)
+            unlink($SSHPIDFILE);
+            $pid = -1;
+        }
     }
     return $pid;
 }
@@ -678,9 +684,21 @@ sub verifyssh {
 
 sub verifysocks {
     my ($proto, $ip, $port) = @_;
-    open(FILE, "<$SOCKSPIDFILE");
-    my $pid=0+<FILE>;
-    close(FILE);
+    my $pid = 0;
+    if(open(FILE, "<$SOCKSPIDFILE")) {
+        $pid=0+<FILE>;
+        close(FILE);
+    }
+    if($pid > 0) {
+        # if we have a pid it is actually our socks server,
+        # since runsocksserver() unlinks previous pidfile
+        if(!kill(0, $pid) {
+            logmsg "RUN: SOCKS server has died after starting up\n";
+            checkdied($pid)
+            unlink($SOCKSPIDFILE);
+            $pid = -1;
+        }
+    }
     return $pid;
 }
 
@@ -2500,7 +2518,7 @@ sub startservers {
             }
             if($what eq "socks4" || $what eq "socks5") {
                 if(!$run{'socks'}) {
-                    ($pid, $pid2) = runsocksserver("", 1);
+                    ($pid, $pid2) = runsocksserver("", $verbose);
                     if($pid <= 0) {
                         return "failed starting socks server";
                     }