diff options
-rwxr-xr-x | tests/runtests.pl | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/tests/runtests.pl b/tests/runtests.pl index 3e806acf1..f3e1905e5 100755 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -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"; } |