Folks,
I just want to give a heads-up that I have found a serious problem in base 7.0.4 on Windows. Running a single IOC on a computer works fine. However, additional IOCs started on the same machine cannot be reached with Channel Access.
I assume there will be a patch release soon. Meanwhile this patch (actually a new file) will fix the problem.
corvette:local/epics/base-7.0.4>git diff R7.0.4 modules/libcom/
diff --git a/modules/libcom/src/osi/os/WIN32/osdSockAddrReuse.cpp b/modules/libcom/src/osi/os/WIN32/osdSockAddrReuse.cpp
new file mode 100644
index 0000000..cc13605
--- /dev/null
+++ b/modules/libcom/src/osi/os/WIN32/osdSockAddrReuse.cpp
@@ -0,0 +1,44 @@
+
+/*************************************************************************\
+* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
+* National Laboratory.
+* Copyright (c) 2002 The Regents of the University of California, as
+* Operator of Los Alamos National Laboratory.
+* EPICS BASE Versions 3.13.7
+* and higher are distributed subject to a Software License Agreement found
+* in file LICENSE that is included with this distribution.
+\*************************************************************************/
+
+/*
+ * Author: Jeff Hill
+ */
+
+#define epicsExportSharedSymbols
+#include "osiSock.h"
+#include "errlog.h"
+
+/*
+ * 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 ).
+ */
+LIBCOM_API void epicsStdCall
+ epicsSocketEnableAddressReuseDuringTimeWaitState ( SOCKET s )
+{
+}
+
+LIBCOM_API void epicsStdCall
+ epicsSocketEnableAddressUseForDatagramFanout ( SOCKET s )
+{
+ int yes = true;
+ int status;
+ status = setsockopt ( s, SOL_SOCKET, SO_REUSEADDR,
+ (char *) & yes, sizeof ( yes ) );
+ if ( status < 0 ) {
+ errlogPrintf (
+ "epicsSocketEnablePortUseForDatagramFanout: "
+ "unable to set SO_REUSEADDR?\n");
+ }
+}
Mark