diff options
author | Mark Felder <feld@feld.me> | 2024-08-28 15:45:13 -0400 |
---|---|---|
committer | Mark Felder <feld@feld.me> | 2024-08-28 15:45:16 -0400 |
commit | fc450fdefc2df2bbec20a79fb2c60a95e7f41833 (patch) | |
tree | 8bc51f684d8d355f81650b6375c65f3f96c3bff2 /lib | |
parent | 58f646bcda97d6a9f21aa41b55f77dd4e2a9c695 (diff) | |
download | pleroma-fc450fdefc2df2bbec20a79fb2c60a95e7f41833.tar.gz pleroma-fc450fdefc2df2bbec20a79fb2c60a95e7f41833.zip |
ReceiverWorker: cancel job if user fetch is forbidden
An instance block with authenticated fetch being required can cause this as we couldn't get the user to find their public key to verify the signature. Commonly observed if someone boosts/Announces a post from an instance that blocked you.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/workers/receiver_worker.ex | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/pleroma/workers/receiver_worker.ex b/lib/pleroma/workers/receiver_worker.ex index d4db97b63..7dce02a5f 100644 --- a/lib/pleroma/workers/receiver_worker.ex +++ b/lib/pleroma/workers/receiver_worker.ex @@ -56,17 +56,20 @@ defmodule Pleroma.Workers.ReceiverWorker do def timeout(_job), do: :timer.seconds(5) + defp process_errors({:error, {:error, _} = error}), do: process_errors(error) + defp process_errors(errors) do case errors do {:error, :origin_containment_failed} -> {:cancel, :origin_containment_failed} {:error, :already_present} -> {:cancel, :already_present} {:error, {:validate_object, _} = reason} -> {:cancel, reason} - {:error, {:error, {:validate, {:error, _changeset} = reason}}} -> {:cancel, reason} + {:error, {:validate, {:error, _changeset} = reason}} -> {:cancel, reason} {:error, {:reject, _} = reason} -> {:cancel, reason} {:signature, false} -> {:cancel, :invalid_signature} {:error, "Object has been deleted"} = reason -> {:cancel, reason} {:error, {:side_effects, {:error, :no_object_actor}} = reason} -> {:cancel, reason} {:error, :not_found} = reason -> {:cancel, reason} + {:error, :forbidden} = reason -> {:cancel, reason} {:error, _} = e -> e e -> {:error, e} end |