Browse Source

Get rid of stray messages when killing HTTP/2 request processes

Loïc Hoguin 8 years ago
parent
commit
b7210d6d1a
1 changed files with 3 additions and 0 deletions
  1. 3 0
      src/cowboy_http2.erl

+ 3 - 0
src/cowboy_http2.erl

@@ -693,6 +693,9 @@ stream_call_terminate(StreamID, Reason, StreamState) ->
 stream_terminate_children([], _, Acc) ->
 stream_terminate_children([], _, Acc) ->
 	Acc;
 	Acc;
 stream_terminate_children([{Pid, StreamID}|Tail], StreamID, Acc) ->
 stream_terminate_children([{Pid, StreamID}|Tail], StreamID, Acc) ->
+	%% We unlink and flush the mailbox to avoid receiving a stray message.
+	unlink(Pid),
+	receive {'EXIT', Pid, _} -> ok after 0 -> ok end,
 	exit(Pid, kill),
 	exit(Pid, kill),
 	stream_terminate_children(Tail, StreamID, Acc);
 	stream_terminate_children(Tail, StreamID, Acc);
 stream_terminate_children([Child|Tail], StreamID, Acc) ->
 stream_terminate_children([Child|Tail], StreamID, Acc) ->