Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cohttp/src/cookie.ml
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ module Cookie_hdr = struct
let comps = Stringext.split_trim_left ~on:";" ~trim:" \t" header in
(* We don't handle $Path, $Domain, $Port, $Version (or $anything
$else) *)
let cookies = List.filter (fun s -> s.[0] != '$') comps in
let cookies = List.filter (fun s -> String.length s > 0 && s.[0] != '$') comps in
let split_pair nvp =
match Stringext.split ~on:'=' nvp ~max:2 with
| [] -> ("","")
Expand Down
10 changes: 10 additions & 0 deletions cohttp/test/test_header.ml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,15 @@ let cookie_with_eq_val () =
let cookies = Cohttp.Cookie.Cookie_hdr.extract h in
Alcotest.check t_cookies "cookie_with_eq_val" cookies ["test", "me="]

let ignores_empty_cookie () =
let cookies = ["foo", "bar"] in
let (k, v) = Cohttp.Cookie.Cookie_hdr.serialize cookies in
(* prepend an invalid empty component *)
let v = "; " ^ v in
let h = Cohttp.Header.of_list [ k, v ] in
let cookies = Cohttp.Cookie.Cookie_hdr.extract h in
Alcotest.check t_cookies "cookie" cookies ["foo", "bar"]

let valid_cookie () =
let cookies = [ "foo", "bar"; "a", "b" ] in
let k, v = Cohttp.Cookie.Cookie_hdr.serialize cookies in
Expand Down Expand Up @@ -462,6 +471,7 @@ Alcotest.run "test_header" [
"Valid Set-Cookie", `Quick, valid_set_cookie;
"Valid Cookie", `Quick, valid_cookie;
"Cookie with =", `Quick, cookie_with_eq_val;
"Ignores empty cookie", `Quick, ignores_empty_cookie;
];
"Content Range", [
"none", `Quick, Content_range.none;
Expand Down