diff options
-rwxr-xr-x | tests/secureserver.pl | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/tests/secureserver.pl b/tests/secureserver.pl index bb4452269..37a395710 100755 --- a/tests/secureserver.pl +++ b/tests/secureserver.pl @@ -248,19 +248,21 @@ if($stunnel_version >= 400) { $SIG{TERM} = \&exit_signal_handler; # stunnel configuration file if(open(STUNCONF, ">$conffile")) { - print STUNCONF " - CApath = $path - cert = $certfile - pid = $pidfile - debug = $loglevel - output = $logfile - socket = $socketopt - foreground = yes - - [curltest] - accept = $accept_port - connect = $target_port - "; + print STUNCONF " + CApath = $path + cert = $certfile + debug = $loglevel + output = /dev/stdout + socket = $socketopt"; + if($stunnel !~ /tstunnel(\.exe)?"?$/) { + print STUNCONF " + pid = $pidfile + foreground = yes"; + } + print STUNCONF " + [curltest] + accept = $accept_port + connect = $target_port"; if(!close(STUNCONF)) { print "$ssltext Error closing file $conffile\n"; exit 1; @@ -293,6 +295,25 @@ if($stunnel_version >= 400) { chmod(0600, $certfile) if(-f $certfile); #*************************************************************************** +# Run tstunnel on Windows. +# +if($stunnel =~ /tstunnel(\.exe)?"?$/) { + # Fake pidfile for tstunnel on Windows. + if(open(OUT, ">$pidfile")) { + print OUT $$ . "\n"; + close(OUT); + } + + # Put an "exec" in front of the command so that the child process + # keeps this child's process ID. + exec("exec $cmd") || die "Can't exec() $cmd: $!"; + + # exec() should never return back here to this process. We protect + # ourselves by calling die() just in case something goes really bad. + die "error: exec() has returned"; +} + +#*************************************************************************** # Run stunnel. # my $rc = system($cmd); |