diff options
-rw-r--r-- | src/gun_http2.erl | 10 | ||||
-rw-r--r-- | test/rfc7540_SUITE.erl | 2 | ||||
-rw-r--r-- | test/shutdown_SUITE.erl | 8 |
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. |