Skip to content

Instantly share code, notes, and snippets.

@onionhammer
Created November 15, 2013 16:43
Show Gist options
  • Save onionhammer/7487452 to your computer and use it in GitHub Desktop.
Save onionhammer/7487452 to your computer and use it in GitHub Desktop.
HTTP Server crashes with invalid header
import parseutils
proc currentNext(header: string): tuple[key, value: string] =
var i = 0
var key = ""
var value = ""
i = header.parseUntil(key, ':')
inc(i) # skip :
i += header.skipWhiteSpace(i)
i += header.parseUntil(value, {'\c', '\L'}, i)
return (key, value)
proc newNext(header: string): tuple[key, value: string] =
var i = 0
var key = ""
var value = ""
i = header.parseUntil(key, ':')
inc(i) # skip :
if i < header.len:
i += header.skipWhiteSpace(i)
i += header.parseUntil(value, {'\c', '\L'}, i)
return (key, value)
when defined(usecurrent):
assert currentNext("something: else") == ("something", "else")
assert currentNext("something: ") == ("something", "")
assert currentNext("something") == ("something", "")
else:
assert newNext("something: else") == ("something", "else")
assert newNext("something : ") == ("something ", "")
assert newNext("something: ") == ("something", "")
assert newNext("something:") == ("something", "")
assert newNext("something") == ("something", "")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment