diff options
author | lain <lain@soykaf.club> | 2020-09-21 17:24:14 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-09-21 17:24:14 +0000 |
commit | 59680f27ff0e1da2eb3c0506e3655f5c7b86a7ec (patch) | |
tree | 4ba5ee3d6789889f4fd66285f69478614eac8575 | |
parent | 9108e27c2f77fd0f49b9ad7c31f6577377236fb2 (diff) | |
parent | 36c9197ac36707cdfe3d679bbd64972b4b03ea84 (diff) | |
download | pleroma-59680f27ff0e1da2eb3c0506e3655f5c7b86a7ec.tar.gz pleroma-59680f27ff0e1da2eb3c0506e3655f5c7b86a7ec.zip |
Merge branch 'bugfix/federator-actor-error' into 'develop'
federator: normalize only actor, catch actor error
See merge request pleroma/pleroma!2986
-rw-r--r-- | lib/pleroma/web/federator/federator.ex | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index f5803578d..130654145 100644 --- 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 |