perf: simpler parsing of headers

This commit is contained in:
Simon Cruanes 2021-05-03 12:39:19 -04:00
parent 0138f22826
commit ddd337cc61

View file

@ -329,7 +329,11 @@ module Headers = struct
acc acc
) else ( ) else (
let k,v = let k,v =
try Scanf.sscanf line "%s@: %s@\r" (fun k v->k,v) try
let i = String.index line ':' in
let k = String.sub line 0 i in
let v = String.sub line (i+1) (String.length line-i-1) |> String.trim in
k,v
with _ -> bad_reqf 400 "invalid header line: %S" line with _ -> bad_reqf 400 "invalid header line: %S" line
in in
loop ((String.lowercase_ascii k,v)::acc) loop ((String.lowercase_ascii k,v)::acc)