mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-20 18:06:53 +00:00
net.connect (with timeout), raise error on connect failure
Under Linux (probably POSIX), the current code tests for timeout, but does not test for connection failure. connectAsync() returns succesfully upon an EINPROGRESS result; but at this point, the connection state is still unknown. After selectWrite() is done, we need to test the socket for errors again.
This commit is contained in:
@@ -1664,6 +1664,9 @@ proc connect*(socket: Socket, address: string, port = Port(0),
|
||||
if selectWrite(s, timeout) != 1:
|
||||
raise newException(TimeoutError, "Call to 'connect' timed out.")
|
||||
else:
|
||||
let res = getSockOptInt(socket.fd, SOL_SOCKET, SO_ERROR)
|
||||
if res != 0:
|
||||
raiseOSError(OSErrorCode(res))
|
||||
when defineSsl and not defined(nimdoc):
|
||||
if socket.isSSL:
|
||||
socket.fd.setBlocking(true)
|
||||
|
||||
Reference in New Issue
Block a user