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 09:56:20 +0000 (10:56 +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)

util/perl/TLSProxy/Proxy.pm

index c29f440..8c7b6d6 100644 (file)
@@ -189,13 +189,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";