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

Lazy-retrieve the peer name and port to avoid wasting time each request.

This commit is contained in:
Loïc Hoguin 2011-03-20 16:09:05 +01:00
parent f5e7178651
commit d69d0adfa7
2 changed files with 4 additions and 2 deletions

View file

@ -65,11 +65,10 @@ request({http_request, _Method, _URI, Version}, State)
request({http_request, Method, {abs_path, AbsPath}, Version}, request({http_request, Method, {abs_path, AbsPath}, Version},
State=#state{socket=Socket, transport=Transport}) -> State=#state{socket=Socket, transport=Transport}) ->
{Path, RawPath, Qs} = cowboy_dispatcher:split_path(AbsPath), {Path, RawPath, Qs} = cowboy_dispatcher:split_path(AbsPath),
{ok, Peer} = Transport:peername(Socket),
ConnAtom = version_to_connection(Version), ConnAtom = version_to_connection(Version),
wait_header(#http_req{socket=Socket, transport=Transport, wait_header(#http_req{socket=Socket, transport=Transport,
connection=ConnAtom, method=Method, version=Version, connection=ConnAtom, method=Method, version=Version,
peer=Peer, path=Path, raw_path=RawPath, raw_qs=Qs}, State); path=Path, raw_path=RawPath, raw_qs=Qs}, State);
request({http_request, Method, '*', Version}, request({http_request, Method, '*', Version},
State=#state{socket=Socket, transport=Transport}) -> State=#state{socket=Socket, transport=Transport}) ->
{ok, Peer} = Transport:peername(Socket), {ok, Peer} = Transport:peername(Socket),

View file

@ -44,6 +44,9 @@ version(Req) ->
-spec peer(Req::#http_req{}) -spec peer(Req::#http_req{})
-> {{Address::ip_address(), Port::port_number()}, Req::#http_req{}}. -> {{Address::ip_address(), Port::port_number()}, Req::#http_req{}}.
peer(Req=#http_req{socket=Socket, transport=Transport, peer=undefined}) ->
{ok, Peer} = Transport:peername(Socket),
{Peer, Req#http_req{peer=Peer}};
peer(Req) -> peer(Req) ->
{Req#http_req.peer, Req}. {Req#http_req.peer, Req}.