From 0ad7321aa06b697b746290037a7e78bbca39bfd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C8=98tefan=20Talpalaru?= Date: Sun, 12 Jul 2020 18:13:22 +0200 Subject: [PATCH] ServerFlags.ReusePort support on POSIX (#95) --- chronos/transports/stream.nim | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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,