Add checks for invalid socket when creating sockets.

This commit is contained in:
Dominik Picheta 2014-04-15 13:51:25 +01:00
commit 21d0cc8cdf
7 changed files with 9 additions and 0 deletions

View file

@ -84,6 +84,7 @@ proc serve*(action: proc (){.nimcall.}) =
of "tcp", "": of "tcp", "":
when useCaas: when useCaas:
var server = socket() var server = socket()
if server == invalidSocket: osError(osLastError())
let p = getConfigVar("server.port") let p = getConfigVar("server.port")
let port = if p.len > 0: parseInt(p).TPort else: 6000.TPort let port = if p.len > 0: parseInt(p).TPort else: 6000.TPort
server.bindAddr(port, getConfigVar("server.address")) server.bindAddr(port, getConfigVar("server.address"))

View file

@ -107,6 +107,7 @@ proc ftpClient*(address: string, port = TPort(21),
result.isAsync = false result.isAsync = false
result.dsockConnected = false result.dsockConnected = false
result.csock = socket() result.csock = socket()
if result.csock == InvalidSocket: osError(osLastError())
proc getDSock(ftp: PFTPClient): TSocket = proc getDSock(ftp: PFTPClient): TSocket =
if ftp.isAsync: return ftp.asyncDSock else: return ftp.dsock if ftp.isAsync: return ftp.asyncDSock else: return ftp.dsock
@ -213,6 +214,7 @@ proc pasv(ftp: PFTPClient) =
## Negotiate a data connection. ## Negotiate a data connection.
if not ftp.isAsync: if not ftp.isAsync:
ftp.dsock = socket() ftp.dsock = socket()
if ftp.dsock == InvalidSocket: osError(osLastError())
else: else:
ftp.asyncDSock = AsyncSocket() ftp.asyncDSock = AsyncSocket()
ftp.asyncDSock.handleRead = ftp.asyncDSock.handleRead =

View file

@ -288,6 +288,7 @@ proc request*(url: string, httpMethod = httpGET, extraHeaders = "",
add(headers, "\c\L") add(headers, "\c\L")
var s = socket() var s = socket()
if s == InvalidSocket: osError(osLastError())
var port = sockets.TPort(80) var port = sockets.TPort(80)
if r.scheme == "https": if r.scheme == "https":
when defined(ssl): when defined(ssl):

View file

@ -249,6 +249,7 @@ proc reconnect*(irc: PIRC, timeout = 5000) =
if secSinceReconnect < timeout: if secSinceReconnect < timeout:
sleep(timeout - secSinceReconnect) sleep(timeout - secSinceReconnect)
irc.sock = socket() irc.sock = socket()
if irc.sock == InvalidSocket: osError(osLastError())
irc.connect() irc.connect()
irc.lastReconnect = epochTime() irc.lastReconnect = epochTime()
@ -274,6 +275,7 @@ proc irc*(address: string, port: TPort = 6667.TPort,
result.messageBuffer = @[] result.messageBuffer = @[]
result.status = SockIdle result.status = SockIdle
result.sock = socket() result.sock = socket()
if result.sock == InvalidSocket: osError(osLastError())
proc processLine(irc: PIRC, line: string): TIRCEvent = proc processLine(irc: PIRC, line: string): TIRCEvent =
if line.len == 0: if line.len == 0:

View file

@ -102,6 +102,7 @@ proc open*(s: var TScgiState, port = TPort(4000), address = "127.0.0.1",
s.input = newString(s.buflen) # will be reused s.input = newString(s.buflen) # will be reused
s.server = socket() s.server = socket()
if s.server == InvalidSocket: osError(osLastError())
new(s.client) # Initialise s.client for `next` new(s.client) # Initialise s.client for `next`
if s.server == InvalidSocket: scgiError("could not open socket") if s.server == InvalidSocket: scgiError("could not open socket")
#s.server.connect(connectionName, port) #s.server.connect(connectionName, port)

View file

@ -238,6 +238,7 @@ when isMainModule:
sock: TSocket sock: TSocket
var sock = socket() var sock = socket()
if sock == InvalidSocket: osError(osLastError())
#sock.setBlocking(false) #sock.setBlocking(false)
sock.connect("irc.freenode.net", TPort(6667)) sock.connect("irc.freenode.net", TPort(6667))

View file

@ -1,6 +1,7 @@
import sockets import sockets
var s: TSocket var s: TSocket
s = socket() s = socket()
if s == InvalidSocket: osError(osLastError())
s.connect("www.google.com", TPort(80)) s.connect("www.google.com", TPort(80))