aboutsummaryrefslogtreecommitdiffstats
path: root/src/cowboy_handler.erl
AgeCommit message (Collapse)Author
2014-02-06Update copyright yearsLoïc Hoguin
2013-11-18Fix loop handler keepalive race conditionJames Fish
Previously if a loop handler received the timeout message from a previous request on the same connection the socket would be set to {active, once} incorrectly - when a socket packet was already in the message queue. This second packet would not be added to the buffer before a Handler:info/3 call if a user message was in the message queue before both socket packets.
2013-08-24Crash on failure, don't report errorsLoïc Hoguin
When something went wrong in a handler we used to report errors and then terminate the process normally. This doesn't work so well with links which won't detect failure. Now we still catch the error, but throw another one with more details on why it happened, including the Req object information and the stacktrace. Ranch will then print an error message with all this information. Because we crash directly, this also means that we will not hog resources unnecessarily for too long when something bad happens.
2013-05-16Move cowboy_http:status() to cowboy:http_status()Loïc Hoguin
2013-04-12Don't receive data from the socket only once in the loop handlerLoïc Hoguin
2013-04-12Ensure we can fetch the body in the info/3 function of loop handlersLoïc Hoguin
2013-02-22Fix to prevent loop handler awakening immediately after response sentJames Fish
If a loop handler sent a response (e.g. cowboy_req:chunked_reply/2,/3) and then returns {loop, Req, HandlerState, hibernate} it would have a {cowboy_req, resp_sent} message in its message queue. This message would cause the process to immediately awaken, so it is flushed before hibernation.
2013-02-21Added warn compile options. Fixed compile warnings.Egobrain
2013-02-17Fix {suspend, ...} specs to use atom() for function nameJames Fish
2013-02-15Make sure socket is passive once we've done with loop handlerAndrew Majorov
It is sometimes important to make a socket passive as it was initially and as it is expected to be by cowboy_protocol, right after we've done with loop handling.
2013-02-11Better handle socket closing with loop handlersLoïc Hoguin
We now read from the socket to be able to detect errors or TCP close events, and buffer the data if any. Once the data receive goes over a certain limit, which defaults to 5000 bytes, we simply close the connection with an {error, overflow} reason.
2013-01-29Fix {cowboy_req, resp_sent} potentially leaking in loop handlersLoïc Hoguin
2013-01-22Replace terminate/2 with terminate/3, adding a ReasonLoïc Hoguin
This should have been done a *long* time ago, back when I initially added Websocket support. This is the first part of two in improving loop handler support with regards to socket closure. Reason may include: {normal, shutdown} for the most normal shutdown, {normal, timeout} for a loop handler timeout shutdown, or {error, _} if an error occured.
2013-01-03Add middleware supportLoïc Hoguin
Middlewares allow customizing the request processing. All existing Cowboy project are incompatible with this commit. You need to change `{dispatch, Dispatch}` in the protocol options to `{env, [{dispatch, Dispatch}]}` to fix your code.