runtests: don't try to stop stunnel before trying again

Calling stopserver() before retrying stunnel due to an error would stop
the dependent server (such as HTTP) meaning stunnel would have nothing
to talk to when it came up. Don't try to force a stop when it didn't
actually start.  Also, don't mark the server as bad for future use when
it starts up on a retry.

Reported-by: eaglegai at github
Tested-by: eaglegai at github
Fixes #10976
This commit is contained in:
Dan Fandrich 2023-04-17 16:57:17 -07:00
parent 2e0b70b8bc
commit f9e8c5f578

View file

@ -1372,11 +1372,14 @@ sub runhttpsserver {
if($httpspid <= 0 || !pidexists($httpspid)) {
# it is NOT alive
stopserver($server, "$pid2");
# don't call stopserver since that will also kill the dependent
# server that has already been started properly
$doesntrun{$pidfile} = 1;
$httpspid = $pid2 = 0;
next;
}
$doesntrun{$pidfile} = 0;
# we have a server!
if($verb) {
logmsg "RUN: $srvrname server is PID $httpspid port $port\n";
@ -1586,12 +1589,14 @@ sub runsecureserver {
$port += 1 + int(rand(700));
next if exists $usedports{$port};
my $options = "$flags --accept $port";
my $cmd = "$perl $srcdir/secureserver.pl $options";
($protospid, $pid2) = startnew($cmd, $pidfile, 15, 0);
if($protospid <= 0 || !pidexists($protospid)) {
# it is NOT alive
stopserver($server, "$pid2");
# don't call stopserver since that will also kill the dependent
# server that has already been started properly
$doesntrun{$pidfile} = 1;
$protospid = $pid2 = 0;
next;