aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2019-09-06 15:36:41 +0200
committerLoïc Hoguin <[email protected]>2019-09-06 15:36:41 +0200
commit585c1dcd001c2cb41cc77216aed2cf729fad6cc7 (patch)
tree32bc48e5bf467dc74cd2a712fde5410bd99abf32
parent7103aac46c8e4e505a47e4aeabe0102ecf168b8f (diff)
downloadgun-585c1dcd001c2cb41cc77216aed2cf729fad6cc7.tar.gz
gun-585c1dcd001c2cb41cc77216aed2cf729fad6cc7.tar.bz2
gun-585c1dcd001c2cb41cc77216aed2cf729fad6cc7.zip
Fix failing tests caused by DATA no longer being sent
-rw-r--r--src/gun_http2.erl10
-rw-r--r--test/rfc7540_SUITE.erl2
-rw-r--r--test/shutdown_SUITE.erl8
3 files changed, 8 insertions, 12 deletions
diff --git a/src/gun_http2.erl b/src/gun_http2.erl
index 90083c1..1726528 100644
--- a/src/gun_http2.erl
+++ b/src/gun_http2.erl
@@ -528,8 +528,14 @@ request(State0=#http2_state{socket=Socket, transport=Transport, opts=Opts,
Stream = #stream{id=StreamID, ref=StreamRef, reply_to=ReplyTo, flow=InitialFlow},
State = State0#http2_state{http2_machine=HTTP2Machine, streams=[Stream|Streams]},
case IsFin of
- fin -> {State, EvHandlerState};
- nofin -> maybe_send_data(State, StreamID, fin, Body, EvHandler, EvHandlerState)
+ fin ->
+ RequestEndEvent = #{
+ stream_ref => StreamRef,
+ reply_to => ReplyTo
+ },
+ {State, EvHandler:request_end(RequestEndEvent, EvHandlerState)};
+ nofin ->
+ maybe_send_data(State, StreamID, fin, Body, EvHandler, EvHandlerState)
end.
initial_flow(infinity, #{flow := InitialFlow}) -> InitialFlow;
diff --git a/test/rfc7540_SUITE.erl b/test/rfc7540_SUITE.erl
index 507b75a..0db9dd0 100644
--- a/test/rfc7540_SUITE.erl
+++ b/test/rfc7540_SUITE.erl
@@ -79,8 +79,6 @@ lingering_data_counts_toward_connection_window(_) ->
{ok, <<SkipLen:24, 1:8, _:8, 1:32>>} = Transport:recv(Socket, 9, 1000),
%% Skip the header.
{ok, _} = gen_tcp:recv(Socket, SkipLen, 1000),
- %% Skip the data.
- {ok, <<_:24, 0:8, _:8, 1:32>>} = Transport:recv(Socket, 9, 1000),
%% Step 3.
%% Send a HEADERS frame.
{HeadersBlock, _} = cow_hpack:encode([
diff --git a/test/shutdown_SUITE.erl b/test/shutdown_SUITE.erl
index e52a3ab..d3a2f56 100644
--- a/test/shutdown_SUITE.erl
+++ b/test/shutdown_SUITE.erl
@@ -382,8 +382,6 @@ http2_server_goaway_one_stream(_) ->
{ok, <<SkipLen:24, 1:8, _:8, 1:32>>} = Transport:recv(Socket, 9, 1000),
%% Skip the header.
{ok, _} = gen_tcp:recv(Socket, SkipLen, 1000),
- %% Skip the data.
- {ok, <<_:24, 0:8, _:8, 1:32>>} = Transport:recv(Socket, 9, 1000),
%% Send a GOAWAY frame.
Transport:send(Socket, cow_http2:goaway(1, no_error, <<>>)),
%% Wait before sending the response back and closing the connection.
@@ -419,22 +417,16 @@ http2_server_goaway_many_streams(_) ->
{ok, <<SkipLen1:24, 1:8, _:8, 1:32>>} = Transport:recv(Socket, 9, 1000),
%% Skip the header.
{ok, _} = gen_tcp:recv(Socket, SkipLen1, 1000),
- %% Skip the data.
- {ok, <<_:24, 0:8, _:8, 1:32>>} = Transport:recv(Socket, 9, 1000),
%% Stream 2.
%% Receive a HEADERS frame.
{ok, <<SkipLen2:24, 1:8, _:8, 3:32>>} = Transport:recv(Socket, 9, 1000),
%% Skip the header.
{ok, _} = gen_tcp:recv(Socket, SkipLen2, 1000),
- %% Skip the data.
- {ok, <<_:24, 0:8, _:8, 3:32>>} = Transport:recv(Socket, 9, 1000),
%% Stream 3.
%% Receive a HEADERS frame.
{ok, <<SkipLen3:24, 1:8, _:8, 5:32>>} = Transport:recv(Socket, 9, 1000),
%% Skip the header.
{ok, _} = gen_tcp:recv(Socket, SkipLen3, 1000),
- %% Skip the data.
- {ok, <<_:24, 0:8, _:8, 5:32>>} = Transport:recv(Socket, 9, 1000),
%% Send a GOAWAY frame.
Transport:send(Socket, cow_http2:goaway(5, no_error, <<>>)),
%% Wait before sending the responses back and closing the connection.