From 19146a597b42bc5f03aed1d97ccef56b4c4d0fac Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Fri, 19 Jun 2020 15:27:28 -0700 Subject: [PATCH] WIN32: fix epicsSocketEnableAddressReuseDuringTimeWaitState() --- modules/libcom/src/osi/os/default/osdSockAddrReuse.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/libcom/src/osi/os/default/osdSockAddrReuse.cpp b/modules/libcom/src/osi/os/default/osdSockAddrReuse.cpp index 5b04a06ce..638067c90 100644 --- a/modules/libcom/src/osi/os/default/osdSockAddrReuse.cpp +++ b/modules/libcom/src/osi/os/default/osdSockAddrReuse.cpp @@ -22,6 +22,15 @@ LIBCOM_API void epicsStdCall epicsSocketEnableAddressReuseDuringTimeWaitState ( SOCKET s ) { +#ifdef _WIN32 + /* + * Note: WINSOCK appears to assign a different functionality for + * SO_REUSEADDR compared to other OS. With WINSOCK SO_REUSEADDR indicates + * that simultaneously servers can bind to the same TCP port on the same host! + * Also, servers are always enabled to reuse a port immediately after + * they exit ( even if SO_REUSEADDR isnt set ). + */ +#else int yes = true; int status; status = setsockopt ( s, SOL_SOCKET, SO_REUSEADDR, @@ -31,6 +40,7 @@ LIBCOM_API void epicsStdCall "epicsSocketEnableAddressReuseDuringTimeWaitState: " "unable to set SO_REUSEADDR?\n"); } +#endif } static