summaryrefslogtreecommitdiff
path: root/activitypub.c
diff options
context:
space:
mode:
Diffstat (limited to 'activitypub.c')
-rw-r--r--activitypub.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/activitypub.c b/activitypub.c
index ff568c8..cfe3eea 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -468,9 +468,9 @@ int is_msg_for_me(snac *snac, const xs_dict *c_msg)
return following_check(snac, actor);
}
- /* if it's an Undo + Follow, it must be from someone we follow */
+ /* if it's an Undo + Follow, it must be from someone that follows us */
if (xs_match(type, "Undo")) {
- return following_check(snac, actor);
+ return follower_check(snac, actor);
}
/* if it's an Accept + Follow, it must be for a Follow we created */
@@ -478,6 +478,12 @@ int is_msg_for_me(snac *snac, const xs_dict *c_msg)
return following_check(snac, actor);
}
+ /* if it's a Follow, it must be explicitly for us */
+ if (xs_match(type, "Follow")) {
+ char *object = xs_dict_get(c_msg, "object");
+ return !xs_is_null(object) && strcmp(snac->actor, object) == 0;
+ }
+
/* if it's not a Create or Update, allow as is */
if (!xs_match(type, "Create|Update")) {
return 1;