mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
Check for async errors in
This commit is contained in:
@@ -923,9 +923,17 @@ else:
|
||||
var retFuture = newFuture[void]("connect")
|
||||
|
||||
proc cb(fd: TAsyncFD): bool =
|
||||
# We have connected.
|
||||
retFuture.complete()
|
||||
return true
|
||||
var ret = SocketHandle(fd).getSockOptInt(cint(SOL_SOCKET), cint(SO_ERROR))
|
||||
if ret == 0:
|
||||
# We have connected.
|
||||
retFuture.complete()
|
||||
return true
|
||||
elif ret == EINTR:
|
||||
# interrupted, keep waiting
|
||||
return false
|
||||
else:
|
||||
retFuture.fail(newException(OSError, osErrorMsg(OSErrorCode(ret))))
|
||||
return true
|
||||
|
||||
var aiList = getAddrInfo(address, port, af)
|
||||
var success = false
|
||||
|
||||
33
tests/async/tasyncconnect.nim
Normal file
33
tests/async/tasyncconnect.nim
Normal file
@@ -0,0 +1,33 @@
|
||||
discard """
|
||||
file: "tasyncconnect.nim"
|
||||
exitcode: 1
|
||||
outputsub: "Error: unhandled exception: Connection refused [Exception]"
|
||||
"""
|
||||
|
||||
import
|
||||
asyncdispatch,
|
||||
posix
|
||||
|
||||
|
||||
const
|
||||
testHost = "127.0.0.1"
|
||||
testPort = Port(17357)
|
||||
|
||||
|
||||
when defined(windows) or defined(nimdoc):
|
||||
discard
|
||||
else:
|
||||
proc testAsyncConnect() {.async.} =
|
||||
var s = newAsyncRawSocket()
|
||||
|
||||
await s.connect(testHost, testPort)
|
||||
|
||||
var peerAddr: SockAddr
|
||||
var addrSize = Socklen(sizeof(peerAddr))
|
||||
var ret = SocketHandle(s).getpeername(addr(peerAddr), addr(addrSize))
|
||||
|
||||
if ret < 0:
|
||||
echo("`connect(...)` failed but no exception was raised.")
|
||||
quit(2)
|
||||
|
||||
waitFor(testAsyncConnect())
|
||||
Reference in New Issue
Block a user