mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 20:30:23 +00:00
Add the private function set_host/4 used by cowboy_protocol
This commit is contained in:
parent
6dbc1f9ef9
commit
350d4ae3f2
2 changed files with 17 additions and 10 deletions
|
@ -182,20 +182,16 @@ wait_header(Req, State=#state{socket=Socket,
|
|||
|
||||
-spec header({http_header, integer(), cowboy_http:header(), any(), binary()}
|
||||
| http_eoh, cowboy_req:req(), #state{}) -> ok.
|
||||
header({http_header, _I, 'Host', _R, RawHost}, Req=#http_req{
|
||||
transport=Transport}, State=#state{host_tokens=undefined}) ->
|
||||
header({http_header, _I, 'Host', _R, RawHost}, Req,
|
||||
State=#state{host_tokens=undefined, transport=Transport}) ->
|
||||
RawHost2 = cowboy_bstr:to_lower(RawHost),
|
||||
case catch cowboy_dispatcher:split_host(RawHost2) of
|
||||
{HostTokens, RawHost3, undefined} ->
|
||||
{HostTokens, Host, undefined} ->
|
||||
Port = default_port(Transport:name()),
|
||||
parse_header(Req#http_req{
|
||||
host=RawHost3, port=Port,
|
||||
headers=[{'Host', RawHost}|Req#http_req.headers]},
|
||||
parse_header(cowboy_req:set_host(Host, Port, RawHost, Req),
|
||||
State#state{host_tokens=HostTokens});
|
||||
{HostTokens, RawHost3, Port} ->
|
||||
parse_header(Req#http_req{
|
||||
host=RawHost3, port=Port,
|
||||
headers=[{'Host', RawHost}|Req#http_req.headers]},
|
||||
{HostTokens, Host, Port} ->
|
||||
parse_header(cowboy_req:set_host(Host, Port, RawHost, Req),
|
||||
State#state{host_tokens=HostTokens});
|
||||
{'EXIT', _Reason} ->
|
||||
error_terminate(400, State)
|
||||
|
|
|
@ -102,6 +102,9 @@
|
|||
-export([upgrade_reply/3]).
|
||||
-export([ensure_response/2]).
|
||||
|
||||
%% Private setter/getter API.
|
||||
-export([set_host/4]).
|
||||
|
||||
%% Misc API.
|
||||
-export([compact/1]).
|
||||
-export([lock/1]).
|
||||
|
@ -908,6 +911,14 @@ ensure_response(#http_req{socket=Socket, transport=Transport,
|
|||
Transport:send(Socket, <<"0\r\n\r\n">>),
|
||||
ok.
|
||||
|
||||
%% Private setter/getter API.
|
||||
|
||||
%% @private
|
||||
-spec set_host(binary(), inet:port_number(), binary(), Req)
|
||||
-> Req when Req::req().
|
||||
set_host(Host, Port, RawHost, Req=#http_req{headers=Headers}) ->
|
||||
Req#http_req{host=Host, port=Port, headers=[{'Host', RawHost}|Headers]}.
|
||||
|
||||
%% Misc API.
|
||||
|
||||
%% @doc Compact the request data by removing all non-system information.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue