diff --git a/lib/pleroma/gun/connections.ex b/lib/pleroma/gun/connections.ex index a0fa8e6eb..95398dd6c 100644 --- a/lib/pleroma/gun/connections.ex +++ b/lib/pleroma/gun/connections.ex @@ -160,26 +160,25 @@ defmodule Pleroma.Gun.Connections do result = if opts[:proxy] do + tls_opts = Map.get(opts, :tls_opts, []) + connect_opts = %{host: host, port: port} + + connect_opts = + if uri.scheme == "https" do + Map.put(connect_opts, :protocols, [:http2]) + |> Map.put(:transport, :tls) + |> Map.put(:tls_opts, tls_opts) + else + connect_opts + end + with {proxy_host, proxy_port} <- opts[:proxy], - tls_opts <- Map.get(opts, :tls_opts, []), open_opts <- Map.delete(opts, :tls_opts), {:ok, conn} <- API.open(proxy_host, proxy_port, open_opts), - {:ok, _} <- API.await_up(conn) do - connect_opts = %{host: host, port: port} - - connect_opts = - if uri.scheme == "https" do - Map.put(connect_opts, :protocols, [:http2]) - |> Map.put(:transport, :tls) - |> Map.put(:tls_opts, tls_opts) - else - connect_opts - end - - with stream <- API.connect(conn, connect_opts), - {:response, :fin, 200, _} <- API.await(conn, stream) do - {:ok, conn, true} - end + {:ok, _} <- API.await_up(conn), + stream <- API.connect(conn, connect_opts), + {:response, :fin, 200, _} <- API.await(conn, stream) do + {:ok, conn, true} else {:error, error} -> {:error, error}