From 9df1704aa159139e99c2a887d6a3b7cf0cbf75ae Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Thu, 2 Jun 2016 19:19:47 +0100 Subject: [PATCH] Let asynchttpserver pass control of socket to cb for upgrades. --- lib/pure/asynchttpserver.nim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/pure/asynchttpserver.nim b/lib/pure/asynchttpserver.nim index efd971606e..31a33173c9 100644 --- a/lib/pure/asynchttpserver.nim +++ b/lib/pure/asynchttpserver.nim @@ -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