temp fix for :gun.info MatchError

This commit is contained in:
Alexander Strizhakov 2020-03-16 15:47:25 +03:00
parent 3805e09b9c
commit 35471205f8
No known key found for this signature in database
GPG key ID: 022896A53AEF1381

View file

@ -169,6 +169,10 @@ defp sort_conns({_, c1}, {_, c2}) do
@impl true @impl true
def handle_info({:gun_up, conn_pid, _protocol}, state) do def handle_info({:gun_up, conn_pid, _protocol}, state) do
# TODO: temp fix for gun MatchError https://github.com/ninenines/gun/issues/222
# TODO: REMOVE LATER
{key, conn} =
try do
%{origin_host: host, origin_scheme: scheme, origin_port: port} = Gun.info(conn_pid) %{origin_host: host, origin_scheme: scheme, origin_port: port} = Gun.info(conn_pid)
host = host =
@ -178,10 +182,13 @@ def handle_info({:gun_up, conn_pid, _protocol}, state) do
end end
key = "#{scheme}:#{host}:#{port}" key = "#{scheme}:#{host}:#{port}"
find_conn(state.conns, conn_pid, key)
rescue
MatcheError -> find_conn(state.conns, conn_pid)
end
state = state =
with {_key, conn} <- find_conn(state.conns, conn_pid, key), with {true, key} <- {Process.alive?(conn_pid), key} do
{true, key} <- {Process.alive?(conn_pid), key} do
put_in(state.conns[key], %{ put_in(state.conns[key], %{
conn conn
| gun_state: :up, | gun_state: :up,