aboutsummaryrefslogtreecommitdiffstats
path: root/src/cowboy_http_req.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2011-03-20 18:03:11 +0100
committerLoïc Hoguin <[email protected]>2011-03-20 18:03:36 +0100
commit71b31cee92f5e0c92f57e94c4916e9e19bbafb3f (patch)
treeef6fae811b5499483edd341bd250ff73d3d27bf8 /src/cowboy_http_req.erl
parentd69d0adfa72383736fe9705f5060881baefe2d21 (diff)
downloadcowboy-71b31cee92f5e0c92f57e94c4916e9e19bbafb3f.tar.gz
cowboy-71b31cee92f5e0c92f57e94c4916e9e19bbafb3f.tar.bz2
cowboy-71b31cee92f5e0c92f57e94c4916e9e19bbafb3f.zip
Make sure we can only reply to an HTTP request inside Handler:handle.
Of course since requests are a record the response state can be explicitly overriden, but standard use prevents errors by making sure only one reply is sent.
Diffstat (limited to 'src/cowboy_http_req.erl')
-rw-r--r--src/cowboy_http_req.erl5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/cowboy_http_req.erl b/src/cowboy_http_req.erl
index 3dcac2f..40af601 100644
--- a/src/cowboy_http_req.erl
+++ b/src/cowboy_http_req.erl
@@ -135,13 +135,14 @@ headers(Req) ->
Body::iolist(), Req::#http_req{}) -> ok.
%% @todo Don't be naive about the headers!
reply(Code, Headers, Body, Req=#http_req{socket=Socket,
- transport=Transport, connection=Connection}) ->
+ transport=Transport, connection=Connection,
+ resp_state=waiting}) ->
StatusLine = ["HTTP/1.1 ", status(Code), "\r\n"],
BaseHeaders = ["Connection: ", atom_to_connection(Connection),
"\r\nContent-Length: ", integer_to_list(iolist_size(Body)), "\r\n"],
Transport:send(Socket,
[StatusLine, BaseHeaders, Headers, "\r\n", Body]),
- {ok, Req}.
+ {ok, Req#http_req{resp_state=done}}.
%% Internal.