mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 20:30:23 +00:00
Don't crash on empty Cookie header
It's not allowed, however a heavily deployed client (Flash player) can send such an empty header, therefore we make a special condition for it and return an empty list when it happens.
This commit is contained in:
parent
4fde6cba94
commit
c1a1fd125d
1 changed files with 8 additions and 2 deletions
|
@ -492,7 +492,10 @@ cookie(Name, Req=#http_req{cookies=undefined}, Default) when is_binary(Name) ->
|
||||||
{ok, undefined, Req2} ->
|
{ok, undefined, Req2} ->
|
||||||
{Default, Req2#http_req{cookies=[]}};
|
{Default, Req2#http_req{cookies=[]}};
|
||||||
{ok, Cookies, Req2} ->
|
{ok, Cookies, Req2} ->
|
||||||
cookie(Name, Req2#http_req{cookies=Cookies}, Default)
|
cookie(Name, Req2#http_req{cookies=Cookies}, Default);
|
||||||
|
%% Flash player incorrectly sends an empty Cookie header.
|
||||||
|
{error, badarg} ->
|
||||||
|
{Default, Req#http_req{cookies=[]}}
|
||||||
end;
|
end;
|
||||||
cookie(Name, Req, Default) ->
|
cookie(Name, Req, Default) ->
|
||||||
case lists:keyfind(Name, 1, Req#http_req.cookies) of
|
case lists:keyfind(Name, 1, Req#http_req.cookies) of
|
||||||
|
@ -507,7 +510,10 @@ cookies(Req=#http_req{cookies=undefined}) ->
|
||||||
{ok, undefined, Req2} ->
|
{ok, undefined, Req2} ->
|
||||||
{[], Req2#http_req{cookies=[]}};
|
{[], Req2#http_req{cookies=[]}};
|
||||||
{ok, Cookies, Req2} ->
|
{ok, Cookies, Req2} ->
|
||||||
cookies(Req2#http_req{cookies=Cookies})
|
cookies(Req2#http_req{cookies=Cookies});
|
||||||
|
%% Flash player incorrectly sends an empty Cookie header.
|
||||||
|
{error, badarg} ->
|
||||||
|
{[], Req#http_req{cookies=[]}}
|
||||||
end;
|
end;
|
||||||
cookies(Req=#http_req{cookies=Cookies}) ->
|
cookies(Req=#http_req{cookies=Cookies}) ->
|
||||||
{Cookies, Req}.
|
{Cookies, Req}.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue