From d33a0df3fe3d8b0b3bc64e66df883f9b20b76780 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Wed, 29 Nov 2017 16:41:40 +0100 Subject: Ignore stray HTTP/2 stream messages that we expect --- src/cowboy_http2.erl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cowboy_http2.erl b/src/cowboy_http2.erl index 0301099..8011196 100644 --- a/src/cowboy_http2.erl +++ b/src/cowboy_http2.erl @@ -490,7 +490,7 @@ down(State=#state{children=Children0}, Pid, Msg) -> State end. -info(State=#state{streams=Streams}, StreamID, Msg) -> +info(State=#state{client_streamid=LastStreamID, streams=Streams}, StreamID, Msg) -> case lists:keyfind(StreamID, #stream.id, Streams) of #stream{state=flush} -> error_logger:error_msg("Received message ~p for terminated stream ~p.", [Msg, StreamID]), @@ -506,8 +506,14 @@ info(State=#state{streams=Streams}, StreamID, Msg) -> stream_reset(State, StreamID, {internal_error, {Class, Exception}, 'Unhandled exception in cowboy_stream:info/3.'}) end; + false when StreamID =< LastStreamID -> + %% Streams that were reset by the client or streams that are + %% in the lingering state may still have Erlang messages going + %% around. In these cases we do not want to log anything. + State; false -> - error_logger:error_msg("Received message ~p for unknown stream ~p.", [Msg, StreamID]), + error_logger:error_msg("Received message ~p for unknown stream ~p.", + [Msg, StreamID]), State end. -- cgit v1.2.3