diff --git a/.gitignore b/.gitignore index db41c85..c631551 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ nimcache/ nimble.develop nimble.paths /build/ +nimbledeps diff --git a/chronos/transports/datagram.nim b/chronos/transports/datagram.nim index a642b59..0fa1a0e 100644 --- a/chronos/transports/datagram.nim +++ b/chronos/transports/datagram.nim @@ -318,6 +318,13 @@ when defined(windows): closeSocket(localSock) raiseTransportOsError(err) + if ServerFlags.ReusePort in flags: + if not setSockOpt(localSock, osdefs.SOL_SOCKET, osdefs.SO_REUSEPORT, 1): + let err = osLastError() + if sock == asyncInvalidSocket: + closeSocket(localSock) + raiseTransportOsError(err) + if ServerFlags.Broadcast in flags: if not setSockOpt(localSock, osdefs.SOL_SOCKET, osdefs.SO_BROADCAST, 1): let err = osLastError() @@ -524,6 +531,13 @@ else: closeSocket(localSock) raiseTransportOsError(err) + if ServerFlags.ReusePort in flags: + if not setSockOpt(localSock, osdefs.SOL_SOCKET, osdefs.SO_REUSEPORT, 1): + let err = osLastError() + if sock == asyncInvalidSocket: + closeSocket(localSock) + raiseTransportOsError(err) + if ServerFlags.Broadcast in flags: if not setSockOpt(localSock, osdefs.SOL_SOCKET, osdefs.SO_BROADCAST, 1): let err = osLastError()