diff options
-rw-r--r-- | lib/pure/asynchttpserver.nim | 2 | ||||
-rw-r--r-- | lib/pure/asyncnet.nim | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/pure/asynchttpserver.nim b/lib/pure/asynchttpserver.nim index 9de0a6268..257fbaeb5 100644 --- a/lib/pure/asynchttpserver.nim +++ b/lib/pure/asynchttpserver.nim @@ -116,7 +116,7 @@ proc sendStatus(client: PAsyncSocket, status: string): Future[void] = proc processClient(client: PAsyncSocket, address: string, callback: proc (request: TRequest): Future[void] {.closure, gcsafe.}) {.async.} = - while true: + while not client.closed: # GET /path HTTP/1.1 # Header: val # \n diff --git a/lib/pure/asyncnet.nim b/lib/pure/asyncnet.nim index a16111349..c6918517e 100644 --- a/lib/pure/asyncnet.nim +++ b/lib/pure/asyncnet.nim @@ -67,7 +67,8 @@ type # PAsyncSocket* {.borrow: `.`.} = distinct PSocket. But that doesn't work. AsyncSocketDesc = object fd*: SocketHandle - case isBuffered*: bool # determines whether this socket is buffered. + closed*: bool ## determines whether this socket has been closed + case isBuffered*: bool ## determines whether this socket is buffered. of true: buffer*: array[0..BufferSize, char] currPos*: int # current index in buffer @@ -400,6 +401,7 @@ proc close*(socket: PAsyncSocket) = raiseSslError() elif res != 1: raiseSslError() + socket.closed = true # TODO: Add extra debugging checks for this. when defined(ssl): proc wrapSocket*(ctx: SslContext, socket: AsyncSocket) = |