summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/secureserver.pl47
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);