From ddd337cc615ddb3afbaa7bc4d69b4737de243818 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Mon, 3 May 2021 12:39:19 -0400 Subject: [PATCH] perf: simpler parsing of headers --- src/Tiny_httpd.ml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Tiny_httpd.ml b/src/Tiny_httpd.ml index 67311bb4..007abce9 100644 --- a/src/Tiny_httpd.ml +++ b/src/Tiny_httpd.ml @@ -329,7 +329,11 @@ module Headers = struct acc ) else ( 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 in loop ((String.lowercase_ascii k,v)::acc)