diff options
author | Mark Felder <feld@feld.me> | 2023-12-19 13:53:10 -0500 |
---|---|---|
committer | Mark Felder <feld@feld.me> | 2023-12-19 13:56:17 -0500 |
commit | f43f33e3078385084136295d2a3320efa6cb4134 (patch) | |
tree | e943a2bc348691d9252c7e7316391e3953c0733a /lib | |
parent | 99b07c817e65d8855069a996777d41a9984f93bf (diff) | |
download | pleroma-f43f33e3078385084136295d2a3320efa6cb4134.tar.gz pleroma-f43f33e3078385084136295d2a3320efa6cb4134.zip |
Return a 400 from a bad delivery attempt to the inbox
This stops the backend from generating 500 errors from these events.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub_controller.ex | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 3b2193ca3..b1a118160 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -273,12 +273,17 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do end def inbox(%{assigns: %{valid_signature: true}} = conn, %{"nickname" => nickname} = params) do - with %User{} = recipient <- User.get_cached_by_nickname(nickname), - {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(params["actor"]), + with %User{is_active: true} = recipient <- User.get_cached_by_nickname(nickname), + {:ok, %User{is_active: true} = actor} <- User.get_or_fetch_by_ap_id(params["actor"]), true <- Utils.recipient_in_message(recipient, actor, params), params <- Utils.maybe_splice_recipient(recipient.ap_id, params) do Federator.incoming_ap_doc(params) json(conn, "ok") + else + _ -> + conn + |> put_status(:bad_request) + |> json("Invalid request.") end end |