Merge branch 'feature/hellthread-mitigation' into 'develop'
[akkoma] / lib / pleroma / web / federator / retry_queue.ex
index 06c094f265aa270ba2c62b0fa7a156e909a2d987..510b4315d4fabd5b0a7a8eace29ccec041b5db42 100644 (file)
@@ -1,13 +1,8 @@
 defmodule Pleroma.Web.Federator.RetryQueue do
   use GenServer
-  alias Pleroma.Web.{WebFinger, Websub}
-  alias Pleroma.Web.ActivityPub.ActivityPub
+
   require Logger
 
-  @websub Application.get_env(:pleroma, :websub)
-  @ostatus Application.get_env(:pleroma, :websub)
-  @httpoison Application.get_env(:pleroma, :websub)
-  @instance Application.get_env(:pleroma, :websub)
   # initial timeout, 5 min
   @initial_timeout 30_000
   @max_retries 5
@@ -17,7 +12,15 @@ defmodule Pleroma.Web.Federator.RetryQueue do
   end
 
   def start_link() do
-    GenServer.start_link(__MODULE__, %{delivered: 0, dropped: 0}, name: __MODULE__)
+    enabled = Pleroma.Config.get([:retry_queue, :enabled], false)
+
+    if enabled do
+      Logger.info("Starting retry queue")
+      GenServer.start_link(__MODULE__, %{delivered: 0, dropped: 0}, name: __MODULE__)
+    else
+      Logger.info("Retry queue disabled")
+      :ignore
+    end
   end
 
   def enqueue(data, transport, retries \\ 0) do
@@ -38,7 +41,7 @@ defmodule Pleroma.Web.Federator.RetryQueue do
         Process.send_after(
           __MODULE__,
           {:send, data, transport, retries},
-          growth_function(retries)
+          timeout
         )
 
         {:noreply, state}
@@ -54,7 +57,7 @@ defmodule Pleroma.Web.Federator.RetryQueue do
       {:ok, _} ->
         {:noreply, %{state | delivered: delivery_count + 1}}
 
-      {:error, reason} ->
+      {:error, _reason} ->
         enqueue(data, transport, retries)
         {:noreply, state}
     end