0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00

Handle lingering_data

This commit is contained in:
Tony Han 2019-04-28 10:46:17 +08:00
parent d846827b2a
commit ca32a22a55

View file

@ -255,6 +255,8 @@ frame(State=#state{http2_machine=HTTP2Machine0}, Frame) ->
maybe_ack(State#state{http2_machine=HTTP2Machine}, Frame);
{ok, {data, StreamID, IsFin, Data}, HTTP2Machine} ->
data_frame(State#state{http2_machine=HTTP2Machine}, StreamID, IsFin, Data);
{ok, {lingering_data, StreamID, DataLen}, HTTP2Machine} ->
lingering_data_frame(State#state{http2_machine=HTTP2Machine}, StreamID, DataLen);
{ok, {headers, StreamID, IsFin, Headers, PseudoHeaders, BodyLen}, HTTP2Machine} ->
headers_frame(State#state{http2_machine=HTTP2Machine},
StreamID, IsFin, Headers, PseudoHeaders, BodyLen);
@ -287,6 +289,13 @@ maybe_ack(State=#state{socket=Socket, transport=Transport}, Frame) ->
end,
State.
lingering_data_frame(State=#state{socket=Socket, transport=Transport, http2_machine=HTTP2Machine0}, _StreamID, DataLen) ->
Transport:send(Socket, [
cow_http2:window_update(DataLen)
]),
HTTP2Machine1 = cow_http2_machine:update_window(DataLen, HTTP2Machine0),
State#state{http2_machine=HTTP2Machine1}.
data_frame(State=#state{opts=Opts, streams=Streams}, StreamID, IsFin, Data) ->
case Streams of
#{StreamID := {running, StreamState0}} ->