mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Add the idle_timeout HTTP/1.1 protocol option
This fixes the connection being dropped because of request_timeout despite there being some active streams.
This commit is contained in:
parent
73b4eb94ff
commit
95d2855f62
4 changed files with 57 additions and 35 deletions
|
@ -1,8 +1,9 @@
|
|||
%% This module implements a loop handler that sends
|
||||
%% itself a timeout that will intentionally arrive
|
||||
%% too late, as it configures itself to only wait
|
||||
%% 200ms before closing the connection in init/2.
|
||||
%% This results in a 204 reply being sent back by Cowboy.
|
||||
%% after the HTTP/1.1 request_timeout. The protocol
|
||||
%% is not supposed to close the connection when a
|
||||
%% request is ongoing, and therefore this handler
|
||||
%% will eventually send a 200 reply.
|
||||
|
||||
-module(loop_handler_timeout_h).
|
||||
|
||||
|
@ -11,11 +12,11 @@
|
|||
-export([terminate/3]).
|
||||
|
||||
init(Req, _) ->
|
||||
erlang:send_after(1000, self(), timeout),
|
||||
{cowboy_loop, Req, undefined, hibernate}.
|
||||
erlang:send_after(6000, self(), timeout),
|
||||
{cowboy_loop, Req, #{hibernate => true}}.
|
||||
|
||||
info(timeout, Req, State) ->
|
||||
{stop, cowboy_req:reply(500, Req), State}.
|
||||
{stop, cowboy_req:reply(200, #{}, <<"Good!">>, Req), State}.
|
||||
|
||||
terminate(timeout, _, _) ->
|
||||
terminate(stop, _, _) ->
|
||||
ok.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue