mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Only send the window_update when Size - RemoteWindow > 0 to prevent over 2^31-1 limit.
This commit is contained in:
parent
d846827b2a
commit
34786b2c9e
1 changed files with 12 additions and 6 deletions
|
@ -574,12 +574,18 @@ commands(State0=#state{socket=Socket, transport=Transport, http2_machine=HTTP2Ma
|
||||||
commands(State, StreamID, Tail);
|
commands(State, StreamID, Tail);
|
||||||
commands(State=#state{socket=Socket, transport=Transport, http2_machine=HTTP2Machine0},
|
commands(State=#state{socket=Socket, transport=Transport, http2_machine=HTTP2Machine0},
|
||||||
StreamID, [{flow, Size}|Tail]) ->
|
StreamID, [{flow, Size}|Tail]) ->
|
||||||
Transport:send(Socket, [
|
RemoteWindow = cow_http2_machine:get_window(HTTP2Machine0),
|
||||||
cow_http2:window_update(Size),
|
HTTP2Machine = case Size - RemoteWindow of
|
||||||
cow_http2:window_update(StreamID, Size)
|
Diff when Diff > 0 ->
|
||||||
]),
|
Transport:send(Socket, [
|
||||||
HTTP2Machine1 = cow_http2_machine:update_window(Size, HTTP2Machine0),
|
cow_http2:window_update(Diff),
|
||||||
HTTP2Machine = cow_http2_machine:update_window(StreamID, Size, HTTP2Machine1),
|
cow_http2:window_update(StreamID, Diff)
|
||||||
|
]),
|
||||||
|
HTTP2Machine1 = cow_http2_machine:update_window(Diff, HTTP2Machine0),
|
||||||
|
cow_http2_machine:update_window(StreamID, Diff, HTTP2Machine1);
|
||||||
|
_ ->
|
||||||
|
HTTP2Machine0
|
||||||
|
end,
|
||||||
commands(State#state{http2_machine=HTTP2Machine}, StreamID, Tail);
|
commands(State#state{http2_machine=HTTP2Machine}, StreamID, Tail);
|
||||||
%% Supervise a child process.
|
%% Supervise a child process.
|
||||||
commands(State=#state{children=Children}, StreamID, [{spawn, Pid, Shutdown}|Tail]) ->
|
commands(State=#state{children=Children}, StreamID, [{spawn, Pid, Shutdown}|Tail]) ->
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue