From 71b31cee92f5e0c92f57e94c4916e9e19bbafb3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Sun, 20 Mar 2011 18:03:11 +0100 Subject: 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. --- src/cowboy_http_req.erl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/cowboy_http_req.erl') 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. -- cgit v1.2.3