logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 59680f27ff0e1da2eb3c0506e3655f5c7b86a7ec
parent: 9108e27c2f77fd0f49b9ad7c31f6577377236fb2
Author: lain <lain@soykaf.club>
Date:   Mon, 21 Sep 2020 17:24:14 +0000

Merge branch 'bugfix/federator-actor-error' into 'develop'

federator: normalize only actor, catch actor error

See merge request pleroma/pleroma!2986

Diffstat:

Mlib/pleroma/web/federator/federator.ex16+++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex @@ -66,14 +66,17 @@ defmodule Pleroma.Web.Federator do def perform(:incoming_ap_doc, params) do Logger.debug("Handling incoming AP activity") - params = Utils.normalize_params(params) + actor = + params + |> Map.get("actor") + |> Utils.get_ap_id() # NOTE: we use the actor ID to do the containment, this is fine because an # actor shouldn't be acting on objects outside their own AP server. - with {:ok, _user} <- ap_enabled_actor(params["actor"]), + with {_, {:ok, _user}} <- {:actor, ap_enabled_actor(actor)}, nil <- Activity.normalize(params["id"]), {_, :ok} <- - {:correct_origin?, Containment.contain_origin_from_id(params["actor"], params)}, + {:correct_origin?, Containment.contain_origin_from_id(actor, params)}, {:ok, activity} <- Transmogrifier.handle_incoming(params) do {:ok, activity} else @@ -85,10 +88,13 @@ defmodule Pleroma.Web.Federator do Logger.debug("Already had #{params["id"]}") {:error, :already_present} + {:actor, e} -> + Logger.debug("Unhandled actor #{actor}, #{inspect(e)}") + {:error, e} + e -> # Just drop those for now - Logger.debug("Unhandled activity") - Logger.debug(Jason.encode!(params, pretty: true)) + Logger.debug(fn -> "Unhandled activity\n" <> Jason.encode!(params, pretty: true) end) {:error, e} end end