From 071599cbcd25cd2669e26d23a6e202e0275f191a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Wed, 3 Jul 2019 17:22:43 +0200 Subject: Add the response_trailers event --- src/gun_http2.erl | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src/gun_http2.erl') diff --git a/src/gun_http2.erl b/src/gun_http2.erl index 4814818..a1ba46e 100644 --- a/src/gun_http2.erl +++ b/src/gun_http2.erl @@ -124,10 +124,7 @@ frame(State=#http2_state{http2_machine=HTTP2Machine0}, Frame, EvHandler, EvHandl stream_ref => StreamRef, reply_to => ReplyTo }, EvHandlerState0); - {ok, nofin} -> - %% @todo response_trailers. - EvHandlerState0; - %% This is an invalid headers frame. + %% Trailers or invalid header frame. _ -> EvHandlerState0 end; @@ -259,10 +256,12 @@ trailers_frame(State, StreamID, Trailers, EvHandler, EvHandlerState0) -> #stream{ref=StreamRef, reply_to=ReplyTo} = get_stream_by_id(State, StreamID), %% @todo We probably want to pass this to gun_content_handler? ReplyTo ! {gun_trailers, self(), StreamRef, Trailers}, - EvHandlerState = EvHandler:response_end(#{ + ResponseEvent = #{ stream_ref => StreamRef, reply_to => ReplyTo - }, EvHandlerState0), + }, + EvHandlerState1 = EvHandler:response_trailers(ResponseEvent#{headers => Trailers}, EvHandlerState0), + EvHandlerState = EvHandler:response_end(ResponseEvent, EvHandlerState1), {maybe_delete_stream(State, StreamID, remote, fin), EvHandlerState}. rst_stream_frame(State=#http2_state{streams=Streams0}, StreamID, Reason) -> -- cgit v1.2.3