summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2011-01-14 08:39:41 +0100
committerAraq <rumpf_a@web.de>2011-01-14 08:39:41 +0100
commitfaac1bee85f3fd5b3b2d3fb407e5d98adef3db21 (patch)
treeed102708164f368b5dd0cf3d52f7dad3a3553363
parent7b433a3de3165be7b2ecc46df6ff0d0677e8b7bb (diff)
downloadNim-faac1bee85f3fd5b3b2d3fb407e5d98adef3db21.tar.gz
httpserver changes
-rwxr-xr-xlib/pure/httpserver.nim29
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)