diff options
| author | Yang Tse <yangsita@gmail.com> | 2009-12-01 15:36:34 +0000 | 
|---|---|---|
| committer | Yang Tse <yangsita@gmail.com> | 2009-12-01 15:36:34 +0000 | 
| commit | ed2aa87e63fa29df0c60b609fd80645aa99d7c59 (patch) | |
| tree | e314209d573e84015bb62a7fc89570af33f8af4f /tests | |
| parent | f0826974f225b71a9b95f76f8ac68ea0d72706d5 (diff) | |
Set socket option SO_REUSEADDR=true on stunnel accept'ing port
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/httpsserver.pl | 46 | 
1 files changed, 35 insertions, 11 deletions
diff --git a/tests/httpsserver.pl b/tests/httpsserver.pl index 15cc60e4b..561d1c86e 100644 --- a/tests/httpsserver.pl +++ b/tests/httpsserver.pl @@ -23,6 +23,15 @@ my $proto='https';  my $stuncert; +my $ver_major; +my $ver_minor; +my $stunnel_version; +my $socketopt; +my $cmd; + +#*************************************************************************** +# Process command line options +#  while(@ARGV) {      if($ARGV[0] eq "-v") {          $verbose=1; @@ -69,8 +78,6 @@ my $ssltext = uc($proto) ." SSL/TLS:";  #***************************************************************************  # Find out version info for the given stunnel binary  # -my $ver_major; -my $ver_minor;  foreach my $veropt (('-version', '-V')) {      foreach my $verstr (qx($stunnel $veropt 2>&1)) {          if($verstr =~ /^stunnel (\d+)\.(\d+) on /) { @@ -81,7 +88,7 @@ foreach my $veropt (('-version', '-V')) {      }      last if($ver_major);  } -if(!$ver_major) { +if((!$ver_major) || (!$ver_minor)) {      if(-x "$stunnel" && ! -d "$stunnel") {          print "$ssltext Unknown stunnel version\n";      } @@ -90,15 +97,26 @@ if(!$ver_major) {      }      exit 1;  } +$stunnel_version = (100*$ver_major) + $ver_minor;  #*************************************************************************** -# Build command to execute depending on stunnel version +# Verify minimmum stunnel required version  # -my $cmd; -if($ver_major < 4) { -    # stunnel version less than 4.00 -    $cmd  = "$stunnel -p $certfile -P $pidfile -d $port -r $target_port -f "; -    $cmd .= "-D $loglevel >$logfile 2>&1"; +if($stunnel_version < 310) { +    print "$ssltext Unsupported stunnel version $ver_major.$ver_minor\n"; +} + +#*************************************************************************** +# Build command to execute for stunnel 3.X versions +# +if($stunnel_version < 400) { +    if($stunnel_version >= 319) { +        $socketopt = "-O a:SO_REUSEADDR=1"; +    } +    $cmd  = "$stunnel -p $certfile -P $pidfile "; +    $cmd .= "-d $port -r $target_port -f -D $loglevel "; +    $cmd .= ($socketopt) ? "$socketopt " : ""; +    $cmd .= ">$logfile 2>&1";      if($verbose) {          print uc($proto) ." server (stunnel $ver_major.$ver_minor)\n";          print "cmd: $cmd\n"; @@ -110,8 +128,12 @@ if($ver_major < 4) {          print "connect to port: $target_port\n";      }  } -else { -    # stunnel version 4.00 or later + +#*************************************************************************** +# Build command to execute for stunnel 4.00 and newer +# +if($stunnel_version >= 400) { +    $socketopt = "a:SO_REUSEADDR=1";      $cmd  = "$stunnel $conffile ";      $cmd .= ">$logfile 2>&1";      # stunnel configuration file @@ -122,6 +144,7 @@ else {  	pid = $pidfile  	debug = $loglevel  	output = $logfile +	socket = $socketopt  	foreground = yes  	[curltest] @@ -145,6 +168,7 @@ else {          print "pid = $pidfile\n";          print "debug = $loglevel\n";          print "output = $logfile\n"; +        print "socket = $socketopt\n";          print "foreground = yes\n";          print "\n";          print "[curltest]\n";  | 
