From c90eebf821fd704c3c4de2d647198e2b8f7bab17 Mon Sep 17 00:00:00 2001 From: cheatfate Date: Wed, 16 May 2018 11:28:44 +0300 Subject: [PATCH] Add ServerFlags for datagram transport on Windows. --- asyncdispatch2/transports/datagram.nim | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/asyncdispatch2/transports/datagram.nim b/asyncdispatch2/transports/datagram.nim index f2b37ad..c730c54 100644 --- a/asyncdispatch2/transports/datagram.nim +++ b/asyncdispatch2/transports/datagram.nim @@ -47,7 +47,7 @@ type ## ``nbytes`` - number of bytes received ## ``remote`` - remote peer address ## ``udata`` - user-defined pointer, specified at Transport creation. - ## + ## ## ``pbytes`` will be `nil` and ``nbytes`` will be ``0``, if there an error ## happens. @@ -220,6 +220,14 @@ when defined(windows): localSock = sock register(localSock) + ## Apply ServerFlags here + if ServerFlags.ReuseAddr in flags: + if not setSockOpt(localSock, SOL_SOCKET, SO_REUSEADDR, 1): + let err = osLastError() + if sock == asyncInvalidSocket: + closeAsyncSocket(localSock) + raiseOsError(err) + if local.port != Port(0): var saddr: Sockaddr_storage var slen: SockLen