0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00

Comparisons of host names MUST be case-insensitive.

This commit is contained in:
Loïc Hoguin 2011-03-19 14:16:17 +01:00
parent 2131a935e6
commit db715a3eb1

View file

@ -84,13 +84,14 @@ wait_header(Req, State=#state{socket=Socket,
Value::string()} | http_eoh, Req::#http_req{}, State::#state{}) -> ok. Value::string()} | http_eoh, Req::#http_req{}, State::#state{}) -> ok.
header({http_header, _I, 'Host', _R, Value}, Req=#http_req{path=Path}, header({http_header, _I, 'Host', _R, Value}, Req=#http_req{path=Path},
State=#state{dispatch=Dispatch}) -> State=#state{dispatch=Dispatch}) ->
Host = cowboy_dispatcher:split_host(Value), Value2 = string:to_lower(Value),
Host = cowboy_dispatcher:split_host(Value2),
%% @todo We probably want to filter the Host and Path here to allow %% @todo We probably want to filter the Host and Path here to allow
%% things like url rewriting. %% things like url rewriting.
case cowboy_dispatcher:match(Host, Path, Dispatch) of case cowboy_dispatcher:match(Host, Path, Dispatch) of
{ok, Handler, Opts, Binds} -> {ok, Handler, Opts, Binds} ->
wait_header(Req#http_req{host=Host, bindings=Binds, wait_header(Req#http_req{host=Host, bindings=Binds,
headers=[{'Host', Value}|Req#http_req.headers]}, headers=[{'Host', Value2}|Req#http_req.headers]},
State#state{handler={Handler, Opts}}); State#state{handler={Handler, Opts}});
{error, notfound} -> {error, notfound} ->
error_terminate(404, State) error_terminate(404, State)