Commit 87ade5f0 authored by Marc Hoersken's avatar Marc Hoersken
Browse files

secureserver.pl: added full support for tstunnel on Windows

tstunnel on Windows does not support the pid option and is unable
to write to an output log that is already being used as a redirection
target for stdout. Therefore it does now output all log data to stdout
by default and secureserver.pl creates a fake pidfile on Windows.
parent a33e7edc
Loading
Loading
Loading
Loading
+34 −13
Original line number Diff line number Diff line
@@ -251,16 +251,18 @@ if($stunnel_version >= 400) {
        print STUNCONF "
            CApath = $path
            cert = $certfile
	pid = $pidfile
            debug = $loglevel
	output = $logfile
	socket = $socketopt
	foreground = yes
	
            output = /dev/stdout
            socket = $socketopt";
        if($stunnel !~ /tstunnel(\.exe)?"?$/) {
            print STUNCONF "
            pid = $pidfile
            foreground = yes";
        }
        print STUNCONF "
            [curltest]
            accept = $accept_port
	connect = $target_port
	";
            connect = $target_port";
        if(!close(STUNCONF)) {
            print "$ssltext Error closing file $conffile\n";
            exit 1;
@@ -292,6 +294,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.
#