Properly fix cancellation race and not introduce FD leaks. (#102)
This commit is contained in:
parent
d6d0084333
commit
bedd1ded5e
|
@ -629,6 +629,7 @@ elif unixPlatform:
|
|||
let loop = getGlobalDispatcher()
|
||||
|
||||
proc continuation(udata: pointer) =
|
||||
if SocketHandle(fd) in loop.selector:
|
||||
unregister(fd)
|
||||
close(SocketHandle(fd))
|
||||
if not isNil(aftercb):
|
||||
|
|
|
@ -722,7 +722,6 @@ when defined(windows):
|
|||
GC_unref(ovl)
|
||||
|
||||
proc cancel(udata: pointer) {.gcsafe.} =
|
||||
if not(retFuture.finished()):
|
||||
sock.closeSocket()
|
||||
|
||||
povl = RefCustomOverlapped()
|
||||
|
@ -1251,7 +1250,6 @@ else:
|
|||
retFuture.complete(transp)
|
||||
|
||||
proc cancel(udata: pointer) {.gcsafe.} =
|
||||
if not(retFuture.finished()):
|
||||
closeSocket(sock)
|
||||
|
||||
while true:
|
||||
|
|
Loading…
Reference in New Issue