diff options
Diffstat (limited to 'src/gun.erl')
-rw-r--r-- | src/gun.erl | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/gun.erl b/src/gun.erl index 4a0df0a..839f665 100644 --- a/src/gun.erl +++ b/src/gun.erl @@ -1494,16 +1494,20 @@ handle_common_connected_no_input({call, From}, {stream_info, StreamRef}, _, tunnel => Tunnel }}; true -> - {ok, Info0} = Protocol:stream_info(ProtoState, dereference_stream_ref(StreamRef, State)), - Info = Info0#{ref => StreamRef}, - case Intermediaries0 of - [] -> - {ok, Info}; - _ -> - Tail = maps:get(intermediaries, Info, []), - {ok, Info#{ - intermediaries => intermediaries_info(Intermediaries0, []) ++ Tail - }} + case Protocol:stream_info(ProtoState, dereference_stream_ref(StreamRef, State)) of + {ok, undefined} -> + {ok, undefined}; + {ok, Info0} -> + Info = Info0#{ref => StreamRef}, + case Intermediaries0 of + [] -> + {ok, Info}; + _ -> + Tail = maps:get(intermediaries, Info, []), + {ok, Info#{ + intermediaries => intermediaries_info(Intermediaries0, []) ++ Tail + }} + end end end }}; |