aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2019-11-04 12:29:16 +0100
committerLoïc Hoguin <[email protected]>2019-11-04 12:29:16 +0100
commitbd6425ab87428cf4c95f4d23e0a48fd065fbd714 (patch)
treef775cc45d441af2205f256d2e5404ec84ee632fb
parente6b3e080e920007f27afb0d28710d4fdc2c57ebe (diff)
downloadgun-bd6425ab87428cf4c95f4d23e0a48fd065fbd714.tar.gz
gun-bd6425ab87428cf4c95f4d23e0a48fd065fbd714.tar.bz2
gun-bd6425ab87428cf4c95f4d23e0a48fd065fbd714.zip
Fix a crash introduced in the previous commit
-rw-r--r--src/gun_http2.erl11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/gun_http2.erl b/src/gun_http2.erl
index eb6f06c..8746b3e 100644
--- a/src/gun_http2.erl
+++ b/src/gun_http2.erl
@@ -769,10 +769,15 @@ create_stream(State=#http2_state{streams=Streams, stream_refs=Refs},
store_stream(State=#http2_state{streams=Streams}, Stream=#stream{id=StreamID}) ->
State#http2_state{streams=Streams#{StreamID => Stream}}.
-take_stream(State=#http2_state{streams=Streams0}, StreamID) ->
+take_stream(State=#http2_state{streams=Streams0, stream_refs=Refs}, StreamID) ->
case maps:take(StreamID, Streams0) of
- {Stream, Streams} -> {Stream, State#http2_state{streams=Streams}};
- error -> error
+ {Stream=#stream{ref=StreamRef}, Streams} ->
+ {Stream, State#http2_state{
+ streams=Streams,
+ stream_refs=maps:remove(StreamRef, Refs)
+ }};
+ error ->
+ error
end.
maybe_delete_stream(State=#http2_state{http2_machine=HTTP2Machine}, StreamID, local, fin) ->