0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-15 04:30:25 +00:00

Merge branch 'fix/relax-conneg-parsing' of https://github.com/tillitech/cowboy

This commit is contained in:
Loïc Hoguin 2012-05-21 15:24:40 +02:00
commit 040c6dc31a

View file

@ -270,7 +270,15 @@ maybe_qparam(Data, Fun) ->
fun (<< $;, Rest/binary >>) -> fun (<< $;, Rest/binary >>) ->
whitespace(Rest, whitespace(Rest,
fun (Rest2) -> fun (Rest2) ->
qparam(Rest2, Fun) %% This is a non-strict parsing clause required by some user agents
%% that use the wrong delimiter putting a charset where a qparam is
%% expected.
try qparam(Rest2, Fun) of
Result -> Result
catch
error:function_clause ->
Fun(<<",", Rest2/binary>>, 1000)
end
end); end);
(Rest) -> (Rest) ->
Fun(Rest, 1000) Fun(Rest, 1000)
@ -885,6 +893,12 @@ nonempty_charset_list_test_() ->
{<<"iso-8859-5, unicode-1-1;q=0.8">>, [ {<<"iso-8859-5, unicode-1-1;q=0.8">>, [
{<<"iso-8859-5">>, 1000}, {<<"iso-8859-5">>, 1000},
{<<"unicode-1-1">>, 800} {<<"unicode-1-1">>, 800}
]},
%% Some user agents send this invalid value for the Accept-Charset header
{<<"ISO-8859-1;utf-8;q=0.7,*;q=0.7">>, [
{<<"iso-8859-1">>, 1000},
{<<"utf-8">>, 700},
{<<"*">>, 700}
]} ]}
], ],
[{V, fun() -> R = nonempty_list(V, fun conneg/2) end} || {V, R} <- Tests]. [{V, fun() -> R = nonempty_list(V, fun conneg/2) end} || {V, R} <- Tests].