summary refs log tree commit diff stats
path: root/lib/pure/scgi.nim
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pure/scgi.nim')
-rwxr-xr-xlib/pure/scgi.nim5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/pure/scgi.nim b/lib/pure/scgi.nim
index 48e1e3362..669b032af 100755
--- a/lib/pure/scgi.nim
+++ b/lib/pure/scgi.nim
@@ -86,6 +86,7 @@ proc open*(s: var TScgiState, port = TPort(4000), address = "127.0.0.1") =
   s.input = newString(s.buflen) # will be reused
   
   s.server = socket()
+  new(s.client) # Initialise s.client for `next`
   if s.server == InvalidSocket: scgiError("could not open socket")
   #s.server.connect(connectionName, port)
   bindAddr(s.server, port, address)
@@ -101,7 +102,7 @@ proc next*(s: var TScgistate, timeout: int = -1): bool =
   ## Returns `True` if a new request has been processed.
   var rsocks = @[s.server]
   if select(rsocks, timeout) == 1 and rsocks.len == 0:
-    s.client = accept(s.server)
+    accept(s.server, s.client)
     var L = 0
     while true:
       var d = s.client.recvChar()
@@ -159,7 +160,7 @@ proc getSocket(h: PObject): tuple[info: TInfo, sock: TSocket] =
 proc handleAccept(h: PObject) =
   var s = PAsyncScgiState(h)
   
-  s.client = accept(s.server)
+  accept(s.server, s.client)
   var L = 0
   while true:
     var d = s.client.recvChar()