aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Tashkinov <ivantashkinov@gmail.com>2019-01-21 14:16:51 +0300
committerIvan Tashkinov <ivantashkinov@gmail.com>2019-01-21 14:16:51 +0300
commitaa480f4a8b46f24a07491228462b4318ca25eda7 (patch)
treefa81bc8a56b2036bbf4e0bd56dcefedaef1961e2
parent52006f8f8a9e71f7444b6849ba01c4fef69745d7 (diff)
downloadpleroma-aa480f4a8b46f24a07491228462b4318ca25eda7.tar.gz
[#530] Prevents user `info` from being overwritten because of race conditions
and non-partial update of embed (in WebFinger.ensure_keys_present and other places).
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index 0431d62af..32c08c9d2 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -140,8 +140,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
additional
),
{:ok, activity} <- insert(create_data, local),
- :ok <- maybe_federate(activity),
- {:ok, _actor} <- User.increase_note_count(actor) do
+ # Changing note count prior to federation in order not to reload `actor` (potentially updated by federator)
+ {:ok, _actor} <- User.increase_note_count(actor),
+ :ok <- maybe_federate(activity) do
{:ok, activity}
end
end
@@ -288,8 +289,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
with {:ok, _} <- Object.delete(object),
{:ok, activity} <- insert(data, local),
- :ok <- maybe_federate(activity),
- {:ok, _actor} <- User.decrease_note_count(user) do
+ # Changing note count prior to federation in order not to reload `actor` (potentially updated by federator)
+ {:ok, _actor} <- User.decrease_note_count(user),
+ :ok <- maybe_federate(activity) do
{:ok, activity}
end
end