TLSProxy::Proxy: Don't use ReuseAddr on Windows
authorRichard Levitte <levitte@openssl.org>
Thu, 18 Jan 2018 09:54:48 +0000 (10:54 +0100)
committerRichard Levitte <levitte@openssl.org>
Thu, 18 Jan 2018 10:30:19 +0000 (11:30 +0100)
On Windows, we sometimes see a behavior with SO_REUSEADDR where there
remains lingering listening sockets on the same address and port as a
newly created one.

An easy solution is not to use ReuseAddr on Windows.

Thanks Bernd Edlinger for the suggestion.

Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
(Merged from https://github.com/openssl/openssl/pull/5103)

(cherry picked from commit e02d5886636095c26a8bff1bf8344bd0bba7ccff)

util/perl/TLSProxy/Proxy.pm

index e30b0aaf679a99de601f0ff3fc61f4ae2dcbd506..6ed13e310963c6ff03ce2733d408a921e4087f9f 100644 (file)
@@ -178,13 +178,15 @@ sub clientstart
     # Create the Proxy socket
     my $proxaddr = $self->proxy_addr;
     $proxaddr =~ s/[\[\]]//g; # Remove [ and ]
-    my $proxy_sock = $IP_factory->(
+    my @proxyargs = (
         LocalHost   => $proxaddr,
         LocalPort   => $self->proxy_port,
         Proto       => "tcp",
         Listen      => SOMAXCONN,
-        ReuseAddr   => 1
-    );
+       );
+    push @proxyargs, ReuseAddr => 1
+        unless $^O eq "MSWin32";
+    my $proxy_sock = $IP_factory->(@proxyargs);
 
     if ($proxy_sock) {
         print "Proxy started on port ".$self->proxy_port."\n";