summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2017-02-07 14:59:46 +0100
committerAraq <rumpf_a@web.de>2017-02-07 14:59:46 +0100
commit8ae05c6555a6a70e907f0640e6200c0aaedd2289 (patch)
treee13af975bd6509a4004ed6de9b6c4ace587449bb
parent4790b6b203ff8c0c54787fec4978eb7befa8c688 (diff)
downloadNim-8ae05c6555a6a70e907f0640e6200c0aaedd2289.tar.gz
cleaned up accept-close-race fix #5279
-rw-r--r--lib/pure/asyncdispatch.nim2
-rw-r--r--lib/pure/nativesockets.nim25
-rw-r--r--lib/upcoming/asyncdispatch.nim2
3 files changed, 2 insertions, 27 deletions
diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim
index 107e26c0c..d97214d15 100644
--- a/lib/pure/asyncdispatch.nim
+++ b/lib/pure/asyncdispatch.nim
@@ -772,7 +772,7 @@ when defined(windows) or defined(nimdoc):
           sizeof(listenSock).SockLen)
       if setoptRet != 0:
         let errcode = osLastError()
-        checkCloseError clientSock.closeSocket()
+        discard clientSock.closeSocket()
         failAccept(errcode)
       else:
         var localSockaddr, remoteSockaddr: ptr SockAddr
diff --git a/lib/pure/nativesockets.nim b/lib/pure/nativesockets.nim
index 17e23c8e0..d51dbd475 100644
--- a/lib/pure/nativesockets.nim
+++ b/lib/pure/nativesockets.nim
@@ -620,28 +620,3 @@ proc selectWrite*(writefds: var seq[SocketHandle],
 when defined(Windows):
   var wsa: WSAData
   if wsaStartup(0x0101'i16, addr wsa) != 0: raiseOSError(osLastError())
-
-proc checkCloseError*(ret: cint) =
-  ## Asserts that the return value of close() or closeSocket() syscall
-  ## does not indicate a programming error (such as invalid descriptor).
-  ## This must only be used when an error has already occurred and
-  ## you are performing a cleanup.
-  ## Otherwise, error handling must be performed as usual.
-  ##
-  ## This procedure must be called right after performing the syscall. Example:
-  ##
-  ## .. code-block:: nim
-  ##
-  ##  let ret = someSysCall()
-  ##  if ret != 0:
-  ##    let errcode = osLastError()
-  ##    checkCloseError sock.closeSocket()
-  ##    raise newException(OSError, osErrorMsg(errcode))
-
-  if ret != 0:
-    let errcode = osLastError()
-    when useWinVersion:
-      doAssert(errcode.int32 notin {WSANOTINITIALISED, WSAENOTSOCK,
-                                    WSAEINPROGRESS, WSAEINTR, WSAEWOULDBLOCK})
-    else:
-      doAssert(errcode.int32 notin {EBADF})
diff --git a/lib/upcoming/asyncdispatch.nim b/lib/upcoming/asyncdispatch.nim
index 74619ab42..d384cd05e 100644
--- a/lib/upcoming/asyncdispatch.nim
+++ b/lib/upcoming/asyncdispatch.nim
@@ -757,7 +757,7 @@ when defined(windows) or defined(nimdoc):
           sizeof(listenSock).SockLen)
       if setoptRet != 0:
         let errcode = osLastError()
-        checkCloseError clientSock.closeSocket()
+        discard clientSock.closeSocket()
         failAccept(errcode)
       else:
         var localSockaddr, remoteSockaddr: ptr SockAddr