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:
parent
d846827b2a
commit
ca32a22a55
1 changed files with 9 additions and 0 deletions
|
@ -255,6 +255,8 @@ frame(State=#state{http2_machine=HTTP2Machine0}, Frame) ->
|
||||||
maybe_ack(State#state{http2_machine=HTTP2Machine}, Frame);
|
maybe_ack(State#state{http2_machine=HTTP2Machine}, Frame);
|
||||||
{ok, {data, StreamID, IsFin, Data}, HTTP2Machine} ->
|
{ok, {data, StreamID, IsFin, Data}, HTTP2Machine} ->
|
||||||
data_frame(State#state{http2_machine=HTTP2Machine}, StreamID, IsFin, Data);
|
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} ->
|
{ok, {headers, StreamID, IsFin, Headers, PseudoHeaders, BodyLen}, HTTP2Machine} ->
|
||||||
headers_frame(State#state{http2_machine=HTTP2Machine},
|
headers_frame(State#state{http2_machine=HTTP2Machine},
|
||||||
StreamID, IsFin, Headers, PseudoHeaders, BodyLen);
|
StreamID, IsFin, Headers, PseudoHeaders, BodyLen);
|
||||||
|
@ -287,6 +289,13 @@ maybe_ack(State=#state{socket=Socket, transport=Transport}, Frame) ->
|
||||||
end,
|
end,
|
||||||
State.
|
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) ->
|
data_frame(State=#state{opts=Opts, streams=Streams}, StreamID, IsFin, Data) ->
|
||||||
case Streams of
|
case Streams of
|
||||||
#{StreamID := {running, StreamState0}} ->
|
#{StreamID := {running, StreamState0}} ->
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue