Let asynchttpserver pass control of socket to cb for upgrades.

This commit is contained in:
Dominik Picheta
2016-06-02 19:19:47 +01:00
parent b33fbedec0
commit 9df1704aa1

View File

@@ -28,8 +28,7 @@
import tables, asyncnet, asyncdispatch, parseutils, uri, strutils
import httpcore
export HttpHeaders, httpcore.`[]`, httpcore.`[]=`, httpcore.add, httpcore.`==`,
httpcore.HttpCode, httpcore.HttpVersion, httpcore.toString
export httpcore except parseHeader
# TODO: If it turns out that the decisions that asynchttpserver makes
# explicitly, about whether to close the client sockets or upgrade them are
@@ -186,6 +185,9 @@ proc processClient(client: AsyncSocket, address: string,
await request.respond(Http400, "Invalid request method. Got: " &
request.reqMethod)
if "upgrade" in request.headers.getOrDefault("connection"):
return
# Persistent connections
if (request.protocol == HttpVer11 and
request.headers.getOrDefault("connection").normalize != "close") or