diff --git a/pvAccessApp/remote/blockingUDPConnector.cpp b/pvAccessApp/remote/blockingUDPConnector.cpp index 94ade32..00225bc 100644 --- a/pvAccessApp/remote/blockingUDPConnector.cpp +++ b/pvAccessApp/remote/blockingUDPConnector.cpp @@ -37,32 +37,23 @@ namespace epics { errStr); } - int optval = _broadcast ? true : false; + int optval = _broadcast ? 1 : 0; int retval = ::setsockopt(socket, SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval)); if(retval<0) errlogSevPrintf(errlogMajor, "Error setting SO_BROADCAST: %s", strerror(errno)); -printf("_broadcast: %d\n", _broadcast); // set the socket options - //if (_reuseSocket) - // epicsSocketEnableAddressUseForDatagramFanout(socket); - - optval = _reuseSocket ? true : false; - retval = ::setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, &optval, + if (_reuseSocket) + epicsSocketEnableAddressUseForDatagramFanout(socket); +/* + optval = _reuseSocket ? 1 : 0; + // or SO_REUSEADDR, OS dependant + retval = ::setsockopt(socket, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval)); if(retval<0) errlogSevPrintf(errlogMajor, "Error setting SO_REUSEADDR: %s", strerror(errno)); -printf("_reuseSocket: %d\n", _reuseSocket); - - /* from MSDN: - * Note: If the setsockopt function is called before the bind - * function, TCP/IP options will not be checked by using TCP/IP - * until the bind occurs. In this case, the setsockopt function - * call will always succeed, but the bind function call can fail - * because of an early setsockopt call failing. - */ - // still we need to set SO_REUSEADDR befire bind +*/ retval = ::bind(socket, (sockaddr*)&(bindAddress.sa), sizeof(sockaddr));