aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2019-12-08 12:18:52 +0100
committerLoïc Hoguin <[email protected]>2019-12-08 12:18:52 +0100
commitfdd2b256600c47b6ca0e419940e1245e1546b5fe (patch)
tree2037a8dfa89e712b5bc5560fd90f104076f6508c
parent8241791a3ea19deeaaa5d80252e69a958227a1d8 (diff)
downloadcowboy-fdd2b256600c47b6ca0e419940e1245e1546b5fe.tar.gz
cowboy-fdd2b256600c47b6ca0e419940e1245e1546b5fe.tar.bz2
cowboy-fdd2b256600c47b6ca0e419940e1245e1546b5fe.zip
Use active,N for HTTP/2 as wellactive_n
-rw-r--r--src/cowboy_http2.erl7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/cowboy_http2.erl b/src/cowboy_http2.erl
index 2754e9c..2c184d1 100644
--- a/src/cowboy_http2.erl
+++ b/src/cowboy_http2.erl
@@ -167,6 +167,7 @@ init(Parent, Ref, Socket, Transport, ProxyHeader, Opts, Peer, Sock, Cert, Buffer
opts=Opts, peer=Peer, sock=Sock, cert=Cert,
http2_status=sequence, http2_machine=HTTP2Machine})),
Transport:send(Socket, Preface),
+ Transport:setopts(Socket, [{active, 100}]),
case Buffer of
<<>> -> loop(State, Buffer);
_ -> parse(State, Buffer)
@@ -208,6 +209,7 @@ init(Parent, Ref, Socket, Transport, ProxyHeader, Opts, Peer, Sock, Cert, Buffer
}, ?MODULE, undefined}), %% @todo undefined or #{}?
State = set_timeout(init_rate_limiting(State2#state{http2_status=sequence})),
Transport:send(Socket, Preface),
+ Transport:setopts(Socket, [{active, 100}]),
case Buffer of
<<>> -> loop(State, Buffer);
_ -> parse(State, Buffer)
@@ -216,7 +218,7 @@ init(Parent, Ref, Socket, Transport, ProxyHeader, Opts, Peer, Sock, Cert, Buffer
loop(State=#state{parent=Parent, socket=Socket, transport=Transport,
opts=Opts, timer=TimerRef, children=Children}, Buffer) ->
%% @todo This should only be called when data was read.
- Transport:setopts(Socket, [{active, once}]),
+% Transport:setopts(Socket, [{active, once}]),
Messages = Transport:messages(),
InactivityTimeout = maps:get(inactivity_timeout, Opts, 300000),
receive
@@ -227,6 +229,9 @@ loop(State=#state{parent=Parent, socket=Socket, transport=Transport,
terminate(State, {socket_error, closed, 'The socket has been closed.'});
{Error, Socket, Reason} when Error =:= element(3, Messages) ->
terminate(State, {socket_error, Reason, 'An error has occurred on the socket.'});
+ {Passive, Socket} when Passive =:= tcp_passive; Passive =:= ssl_passive ->
+ Transport:setopts(Socket, [{active, 100}]),
+ loop(State, Buffer);
%% System messages.
{'EXIT', Parent, Reason} ->
%% @todo Graceful shutdown here as well?