diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/pool/connections.ex | 40 | ||||
| -rw-r--r-- | lib/pleroma/reverse_proxy/client/tesla.ex | 8 | 
2 files changed, 25 insertions, 23 deletions
| diff --git a/lib/pleroma/pool/connections.ex b/lib/pleroma/pool/connections.ex index 05fa8f7ad..bde3ffd13 100644 --- a/lib/pleroma/pool/connections.ex +++ b/lib/pleroma/pool/connections.ex @@ -36,17 +36,16 @@ defmodule Pleroma.Pool.Connections do    def checkin(%URI{} = uri, name) do      timeout = Config.get([:connections_pool, :checkin_timeout], 250) -    GenServer.call( -      name, -      {:checkin, uri}, -      timeout -    ) +    GenServer.call(name, {:checkin, uri}, timeout)    end    @spec alive?(atom()) :: boolean()    def alive?(name) do -    pid = Process.whereis(name) -    if pid, do: Process.alive?(pid), else: false +    if pid = Process.whereis(name) do +      Process.alive?(pid) +    else +      false +    end    end    @spec get_state(atom()) :: t() @@ -131,19 +130,20 @@ defmodule Pleroma.Pool.Connections do        %{conn: conn, gun_state: :up} = current_conn ->          Logger.debug("reusing conn #{key}") -        with time <- :os.system_time(:second), -             last_reference <- time - current_conn.last_reference, -             current_crf <- crf(last_reference, 100, current_conn.crf), -             state <- -               put_in(state.conns[key], %{ -                 current_conn -                 | last_reference: time, -                   crf: current_crf, -                   conn_state: :active, -                   used_by: [from | current_conn.used_by] -               }) do -          {:reply, conn, state} -        end +        time = :os.system_time(:second) +        last_reference = time - current_conn.last_reference +        current_crf = crf(last_reference, 100, current_conn.crf) + +        state = +          put_in(state.conns[key], %{ +            current_conn +            | last_reference: time, +              crf: current_crf, +              conn_state: :active, +              used_by: [from | current_conn.used_by] +          }) + +        {:reply, conn, state}        %{gun_state: :down} ->          {:reply, nil, state} diff --git a/lib/pleroma/reverse_proxy/client/tesla.ex b/lib/pleroma/reverse_proxy/client/tesla.ex index 498a905e1..80a0c8972 100644 --- a/lib/pleroma/reverse_proxy/client/tesla.ex +++ b/lib/pleroma/reverse_proxy/client/tesla.ex @@ -18,8 +18,9 @@ defmodule Pleroma.ReverseProxy.Client.Tesla do    def request(method, url, headers, body, opts \\ []) do      check_adapter() -    with opts <- Keyword.merge(opts, body_as: :chunks, mode: :passive), -         {:ok, response} <- +    opts = Keyword.merge(opts, body_as: :chunks) + +    with {:ok, response} <-             Pleroma.HTTP.request(               method,               url, @@ -40,7 +41,8 @@ defmodule Pleroma.ReverseProxy.Client.Tesla do    @impl true    @spec stream_body(map()) :: {:ok, binary(), map()} | {:error, atom() | String.t()} | :done    def stream_body(%{pid: pid, opts: opts, fin: true}) do -    # if connection was sended and there were redirects, we need to close new conn - pid manually +    # if connection was reused, but in tesla were redirects, +    # tesla returns new opened connection, which must be closed manually      if opts[:old_conn], do: Tesla.Adapter.Gun.close(pid)      # if there were redirects we need to checkout old conn      conn = opts[:old_conn] || opts[:conn] | 
