mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 04:10:24 +00:00
Use active,N for HTTP/2 as well
This commit is contained in:
parent
8241791a3e
commit
fdd2b25660
1 changed files with 6 additions and 1 deletions
|
@ -167,6 +167,7 @@ init(Parent, Ref, Socket, Transport, ProxyHeader, Opts, Peer, Sock, Cert, Buffer
|
||||||
opts=Opts, peer=Peer, sock=Sock, cert=Cert,
|
opts=Opts, peer=Peer, sock=Sock, cert=Cert,
|
||||||
http2_status=sequence, http2_machine=HTTP2Machine})),
|
http2_status=sequence, http2_machine=HTTP2Machine})),
|
||||||
Transport:send(Socket, Preface),
|
Transport:send(Socket, Preface),
|
||||||
|
Transport:setopts(Socket, [{active, 100}]),
|
||||||
case Buffer of
|
case Buffer of
|
||||||
<<>> -> loop(State, Buffer);
|
<<>> -> loop(State, Buffer);
|
||||||
_ -> parse(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 #{}?
|
}, ?MODULE, undefined}), %% @todo undefined or #{}?
|
||||||
State = set_timeout(init_rate_limiting(State2#state{http2_status=sequence})),
|
State = set_timeout(init_rate_limiting(State2#state{http2_status=sequence})),
|
||||||
Transport:send(Socket, Preface),
|
Transport:send(Socket, Preface),
|
||||||
|
Transport:setopts(Socket, [{active, 100}]),
|
||||||
case Buffer of
|
case Buffer of
|
||||||
<<>> -> loop(State, Buffer);
|
<<>> -> loop(State, Buffer);
|
||||||
_ -> parse(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,
|
loop(State=#state{parent=Parent, socket=Socket, transport=Transport,
|
||||||
opts=Opts, timer=TimerRef, children=Children}, Buffer) ->
|
opts=Opts, timer=TimerRef, children=Children}, Buffer) ->
|
||||||
%% @todo This should only be called when data was read.
|
%% @todo This should only be called when data was read.
|
||||||
Transport:setopts(Socket, [{active, once}]),
|
% Transport:setopts(Socket, [{active, once}]),
|
||||||
Messages = Transport:messages(),
|
Messages = Transport:messages(),
|
||||||
InactivityTimeout = maps:get(inactivity_timeout, Opts, 300000),
|
InactivityTimeout = maps:get(inactivity_timeout, Opts, 300000),
|
||||||
receive
|
receive
|
||||||
|
@ -227,6 +229,9 @@ loop(State=#state{parent=Parent, socket=Socket, transport=Transport,
|
||||||
terminate(State, {socket_error, closed, 'The socket has been closed.'});
|
terminate(State, {socket_error, closed, 'The socket has been closed.'});
|
||||||
{Error, Socket, Reason} when Error =:= element(3, Messages) ->
|
{Error, Socket, Reason} when Error =:= element(3, Messages) ->
|
||||||
terminate(State, {socket_error, Reason, 'An error has occurred on the socket.'});
|
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.
|
%% System messages.
|
||||||
{'EXIT', Parent, Reason} ->
|
{'EXIT', Parent, Reason} ->
|
||||||
%% @todo Graceful shutdown here as well?
|
%% @todo Graceful shutdown here as well?
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue