Browse Source

Fixed follow / unfollow mess for shared inboxes.

default 1 year ago
parent
commit
52f27123bb
1 changed files with 8 additions and 2 deletions
  1. 8 2
      activitypub.c

+ 8 - 2
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;