diff options
author | Araq <rumpf_a@web.de> | 2011-01-14 08:39:41 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2011-01-14 08:39:41 +0100 |
commit | faac1bee85f3fd5b3b2d3fb407e5d98adef3db21 (patch) | |
tree | ed102708164f368b5dd0cf3d52f7dad3a3553363 | |
parent | 7b433a3de3165be7b2ecc46df6ff0d0677e8b7bb (diff) | |
download | Nim-faac1bee85f3fd5b3b2d3fb407e5d98adef3db21.tar.gz |
httpserver changes
-rwxr-xr-x | lib/pure/httpserver.nim | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/lib/pure/httpserver.nim b/lib/pure/httpserver.nim index 0f18f7569..f8368a631 100755 --- a/lib/pure/httpserver.nim +++ b/lib/pure/httpserver.nim @@ -234,12 +234,9 @@ proc next*(s: var TServer) = var data = recv(s.client) #discard recvLine(s.client, data) - var i = 0 - if skipIgnoreCase(data, "GET") > 0: i = 3 - elif skipIgnoreCase(data, "POST") > 0: i = 4 - elif data.len == 0: - # Google Chrome sends an empty line first? the web is ugly ... - nil + var i = skipWhitespace(data) + if skipIgnoreCase(data, "GET") > 0: inc(i, 3) + elif skipIgnoreCase(data, "POST") > 0: inc(i, 4) else: unimplemented(s.client) return @@ -268,7 +265,7 @@ proc run*(handleRequest: proc (client: TSocket, path, query: string): bool, ## encapsulates the server object and main loop var s: TServer open(s, port) - echo("httpserver running on port ", s.port) + #echo("httpserver running on port ", s.port) while true: next(s) if handleRequest(s.client, s.path, s.query): break @@ -277,11 +274,17 @@ proc run*(handleRequest: proc (client: TSocket, path, query: string): bool, when isMainModule: var counter = 0 - proc handleRequest(client: TSocket, path, query: string): bool {.procvar.} = - inc(counter) - client.send("Hello, Andreas, for the $#th time. $# ? $#" % [ - $counter, path, query] & wwwNL) - return false # do not stop processing - run(handleRequest, TPort(0)) + var s: TServer + open(s, TPort(0)) + echo("httpserver running on port ", s.port) + while true: + next(s) + + inc(counter) + s.client.send("Hello, Andreas, for the $#th time. $# ? $#" % [ + $counter, s.path, s.query] & wwwNL) + + close(s.client) + close(s) |