Skip to content

Commit 795174c

Browse files
committed
Add a test for WINDOW_UPDATEs on closed streams
1 parent 8a9b817 commit 795174c

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

test/mint/http2/conn_test.exs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1661,6 +1661,36 @@ defmodule Mint.HTTP2Test do
16611661
refute HTTP2.open?(conn)
16621662
end
16631663

1664+
test "server sends invalid WINDOW_UPDATE on a stream that is in the half-closed (remote) state (RFC9113§5.1)",
1665+
%{conn: conn} do
1666+
{conn, ref} = open_request(conn)
1667+
1668+
assert_recv_frames [headers(stream_id: stream_id)]
1669+
1670+
assert {:error, %HTTP2{} = conn, reason, responses} =
1671+
stream_frames(conn, [
1672+
headers(
1673+
stream_id: stream_id,
1674+
hbf: server_encode_headers([{":status", "200"}]),
1675+
flags: set_flags(:headers, [:end_headers])
1676+
),
1677+
data(stream_id: stream_id, data: "", flags: set_flags(:data, [:end_stream])),
1678+
window_update(stream_id: stream_id, window_size_increment: 1000)
1679+
])
1680+
1681+
assert Enum.reverse(responses) == [
1682+
{:status, ref, 200},
1683+
{:headers, ref, []},
1684+
{:data, ref, ""},
1685+
{:done, ref}
1686+
]
1687+
1688+
assert_http2_error reason, {:stream_not_found, ^stream_id}
1689+
1690+
# Conn stays open.
1691+
assert HTTP2.open?(conn)
1692+
end
1693+
16641694
test "server violates client's max frame size", %{conn: conn} do
16651695
{conn, _ref} = open_request(conn)
16661696

0 commit comments

Comments
 (0)