Fixed some recvLine deprecation warnings in httpserver module.

This commit is contained in:
Dominik Picheta 2013-03-27 23:57:39 +00:00
commit b21dda385c

View file

@ -121,7 +121,7 @@ proc executeCgi(client: TSocket, path, query: string, meth: TRequestMethod) =
var buf = TaintedString"" var buf = TaintedString""
var dataAvail = false var dataAvail = false
while dataAvail: while dataAvail:
dataAvail = recvLine(client, buf) dataAvail = recvLine(client, buf) # TODO: This is incorrect.
var L = toLower(buf.string) var L = toLower(buf.string)
if L.startsWith("content-length:"): if L.startsWith("content-length:"):
var i = len("content-length:") var i = len("content-length:")
@ -256,7 +256,7 @@ proc next*(s: var TServer) =
s.headers = newStringTable(modeCaseInsensitive) s.headers = newStringTable(modeCaseInsensitive)
#headers(s.client, "") #headers(s.client, "")
var data = "" var data = ""
while not s.client.recvLine(data): nil s.client.readLine(data)
if data == "": if data == "":
# Socket disconnected # Socket disconnected
s.client.close() s.client.close()
@ -264,21 +264,21 @@ proc next*(s: var TServer) =
return return
var header = "" var header = ""
while true: while true:
if s.client.recvLine(header): s.client.readLine(header)
if header == "\c\L": break if header == "\c\L": break
if header != "": if header != "":
var i = 0 var i = 0
var key = "" var key = ""
var value = "" var value = ""
i = header.parseUntil(key, ':') i = header.parseUntil(key, ':')
inc(i) # skip : inc(i) # skip :
i += header.skipWhiteSpace(i) i += header.skipWhiteSpace(i)
i += header.parseUntil(value, {'\c', '\L'}, i) i += header.parseUntil(value, {'\c', '\L'}, i)
s.headers[key] = value s.headers[key] = value
else: else:
s.client.close() s.client.close()
next(s) next(s)
return return
var i = skipWhitespace(data) var i = skipWhitespace(data)
if skipIgnoreCase(data, "GET") > 0: if skipIgnoreCase(data, "GET") > 0:
@ -382,27 +382,27 @@ proc nextAsync(s: PAsyncHTTPServer) =
s.headers = newStringTable(modeCaseInsensitive) s.headers = newStringTable(modeCaseInsensitive)
#headers(s.client, "") #headers(s.client, "")
var data = "" var data = ""
while not s.client.recvLine(data): nil s.client.readLine(data)
if data == "": if data == "":
# Socket disconnected # Socket disconnected
s.client.close() s.client.close()
return return
var header = "" var header = ""
while true: while true:
if s.client.recvLine(header): s.client.readLine(header) # TODO: Very inefficient here. Prone to DOS.
if header == "\c\L": break if header == "\c\L": break
if header != "": if header != "":
var i = 0 var i = 0
var key = "" var key = ""
var value = "" var value = ""
i = header.parseUntil(key, ':') i = header.parseUntil(key, ':')
inc(i) # skip : inc(i) # skip :
i += header.skipWhiteSpace(i) i += header.skipWhiteSpace(i)
i += header.parseUntil(value, {'\c', '\L'}, i) i += header.parseUntil(value, {'\c', '\L'}, i)
s.headers[key] = value s.headers[key] = value
else: else:
s.client.close() s.client.close()
return return
var i = skipWhitespace(data) var i = skipWhitespace(data)
if skipIgnoreCase(data, "GET") > 0: if skipIgnoreCase(data, "GET") > 0: