diff --git a/chronos/transports/stream.nim b/chronos/transports/stream.nim index 5b041db..56a9610 100644 --- a/chronos/transports/stream.nim +++ b/chronos/transports/stream.nim @@ -1723,13 +1723,19 @@ proc createStreamServer*(host: TransportAddress, serverSocket = sock if host.family in {AddressFamily.IPv4, AddressFamily.IPv6}: - # SO_REUSEADDR is not useful for Unix domain sockets. + # SO_REUSEADDR and SO_REUSEPORT are not useful for Unix domain sockets. if ServerFlags.ReuseAddr in flags: if not setSockOpt(serverSocket, SOL_SOCKET, SO_REUSEADDR, 1): let err = osLastError() if sock == asyncInvalidSocket: serverSocket.closeSocket() raiseTransportOsError(err) + if ServerFlags.ReusePort in flags: + if not setSockOpt(serverSocket, SOL_SOCKET, SO_REUSEPORT, 1): + let err = osLastError() + if sock == asyncInvalidSocket: + serverSocket.closeSocket() + raiseTransportOsError(err) # TCP flags are not useful for Unix domain sockets. if ServerFlags.TcpNoDelay in flags: if not setSockOpt(serverSocket, handles.IPPROTO_TCP,