summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordefault <nobody@localhost>2023-12-17 16:25:04 +0100
committerdefault <nobody@localhost>2023-12-17 16:25:04 +0100
commit29b6b5c717add09a55266fe04ddaea62c414b68e (patch)
tree83cd9289c8d323189a0291fb980d5944a3756ee7
parent935c09125da464d064ea9f72b947c5bc235f5328 (diff)
Even more is_msg_for_me() updates.
-rw-r--r--activitypub.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/activitypub.c b/activitypub.c
index f948edc..07d0c17 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -447,7 +447,8 @@ int is_msg_public(const xs_dict *msg)
int is_msg_for_me(snac *snac, const xs_dict *c_msg)
/* checks if this message is for me */
{
- const char *type = xs_dict_get(c_msg, "type");
+ const char *type = xs_dict_get(c_msg, "type");
+ const char *actor = xs_dict_get(c_msg, "actor");
if (xs_match(type, "Like|Announce")) {
const char *object = xs_dict_get(c_msg, "object");
@@ -464,12 +465,12 @@ int is_msg_for_me(snac *snac, const xs_dict *c_msg)
return 2;
/* if it's by someone we don't follow, reject */
- return following_check(snac, xs_dict_get(c_msg, "actor"));
+ return following_check(snac, actor);
}
/* if it's an Undo or an Update, it must be from someone we follow */
if (xs_match(type, "Undo|Update")) {
- return following_check(snac, xs_dict_get(c_msg, "actor"));
+ return following_check(snac, actor);
}
/* if it's not a Create, allow as is */
@@ -477,6 +478,10 @@ int is_msg_for_me(snac *snac, const xs_dict *c_msg)
return 1;
}
+ /* if we follow the Creator of this post, allow */
+ if (following_check(snac, actor))
+ return 1;
+
xs_dict *msg = xs_dict_get(c_msg, "object");
xs *rcpts = recipient_list(snac, msg, 0);
xs_list *p = rcpts;