summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-10-12 15:49:33 +0200
committerlain <lain@soykaf.club>2020-10-12 15:49:33 +0200
commitd3552636ce546bd91458ac06a3e1772d90508070 (patch)
treef77d21923eba5e47229ca5cf4824319489d2372d
parentbc3cf0fee0b93eb3cf8d2ba0f9a0dcc09b01331d (diff)
SideEffects: Don't delete a deleted object twice.2232-double-delete
-rw-r--r--lib/pleroma/web/activity_pub/side_effects.ex3
-rw-r--r--test/web/activity_pub/side_effects_test.exs9
2 files changed, 12 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex
index b9a83a544..a3db72a4c 100644
--- a/lib/pleroma/web/activity_pub/side_effects.ex
+++ b/lib/pleroma/web/activity_pub/side_effects.ex
@@ -253,6 +253,9 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
result =
case deleted_object do
+ %Object{data: %{"type" => "Tombstone"}} ->
+ :ok
+
%Object{} ->
with {:ok, deleted_object, activity} <- Object.delete(deleted_object),
{_, actor} when is_binary(actor) <- {:actor, deleted_object.data["actor"]},
diff --git a/test/web/activity_pub/side_effects_test.exs b/test/web/activity_pub/side_effects_test.exs
index 9efbaad04..4c8ed5aed 100644
--- a/test/web/activity_pub/side_effects_test.exs
+++ b/test/web/activity_pub/side_effects_test.exs
@@ -238,6 +238,15 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do
{:error, :no_object_actor} = SideEffects.handle(delete)
end) =~ "object doesn't have an actor"
end
+
+ test "it works with double deletions", %{
+ delete: delete,
+ object: object
+ } do
+ assert {:ok, activity, _} = SideEffects.handle(delete)
+ Object.invalid_object_cache(object)
+ assert {:ok, ^activity, _} = SideEffects.handle(delete)
+ end
end
describe "EmojiReact objects" do