diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/gun/connection_pool.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/gun/connection_pool/worker.ex | 14 | 
2 files changed, 12 insertions, 4 deletions
| diff --git a/lib/pleroma/gun/connection_pool.ex b/lib/pleroma/gun/connection_pool.ex index c6894be53..49e9885bb 100644 --- a/lib/pleroma/gun/connection_pool.ex +++ b/lib/pleroma/gun/connection_pool.ex @@ -45,7 +45,7 @@ defmodule Pleroma.Gun.ConnectionPool do      # so instead we use cast + monitor      ref = Process.monitor(worker_pid) -    if register, do: GenServer.cast(worker_pid, {:add_client, self(), true}) +    if register, do: GenServer.cast(worker_pid, {:add_client, self()})      receive do        {:conn_pid, pid} -> diff --git a/lib/pleroma/gun/connection_pool/worker.ex b/lib/pleroma/gun/connection_pool/worker.ex index a61892c60..fec9d0efa 100644 --- a/lib/pleroma/gun/connection_pool/worker.ex +++ b/lib/pleroma/gun/connection_pool/worker.ex @@ -36,10 +36,18 @@ defmodule Pleroma.Gun.ConnectionPool.Worker do    end    @impl true -  def handle_cast({:add_client, client_pid, send}, state) do +  def handle_cast({:add_client, client_pid}, state) do      case handle_call(:add_client, {client_pid, nil}, state) do        {:reply, conn_pid, state, :hibernate} -> -        if send, do: send(client_pid, {:conn_pid, conn_pid}) +        send(client_pid, {:conn_pid, conn_pid}) +        {:noreply, state, :hibernate} +    end +  end + +  @impl true +  def handle_cast({:remove_client, client_pid}, state) do +    case handle_call(:remove_client, {client_pid, nil}, state) do +      {:reply, _, state, :hibernate} ->          {:noreply, state, :hibernate}      end    end @@ -115,7 +123,7 @@ defmodule Pleroma.Gun.ConnectionPool.Worker do        %{key: state.key}      ) -    handle_cast({:remove_client, pid, false}, state) +    handle_cast({:remove_client, pid}, state)    end    # LRFU policy: https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.55.1478 | 
