diff options
author | Loïc Hoguin <[email protected]> | 2011-03-20 16:09:05 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2011-03-20 16:09:05 +0100 |
commit | d69d0adfa72383736fe9705f5060881baefe2d21 (patch) | |
tree | 32f5c8f9bad92f469a96c7f2d0de80b9395b0474 /src | |
parent | f5e7178651b077b956ed75db4bce3fa5ae4512e6 (diff) | |
download | cowboy-d69d0adfa72383736fe9705f5060881baefe2d21.tar.gz cowboy-d69d0adfa72383736fe9705f5060881baefe2d21.tar.bz2 cowboy-d69d0adfa72383736fe9705f5060881baefe2d21.zip |
Lazy-retrieve the peer name and port to avoid wasting time each request.
Diffstat (limited to 'src')
-rw-r--r-- | src/cowboy_http_protocol.erl | 3 | ||||
-rw-r--r-- | src/cowboy_http_req.erl | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/cowboy_http_protocol.erl b/src/cowboy_http_protocol.erl index 2847646..f6047bf 100644 --- a/src/cowboy_http_protocol.erl +++ b/src/cowboy_http_protocol.erl @@ -65,11 +65,10 @@ request({http_request, _Method, _URI, Version}, State) request({http_request, Method, {abs_path, AbsPath}, Version}, State=#state{socket=Socket, transport=Transport}) -> {Path, RawPath, Qs} = cowboy_dispatcher:split_path(AbsPath), - {ok, Peer} = Transport:peername(Socket), ConnAtom = version_to_connection(Version), wait_header(#http_req{socket=Socket, transport=Transport, 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}, State=#state{socket=Socket, transport=Transport}) -> {ok, Peer} = Transport:peername(Socket), diff --git a/src/cowboy_http_req.erl b/src/cowboy_http_req.erl index 1938bc7..3dcac2f 100644 --- a/src/cowboy_http_req.erl +++ b/src/cowboy_http_req.erl @@ -44,6 +44,9 @@ version(Req) -> -spec peer(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) -> {Req#http_req.peer, Req}. |