Browse Source

Even more is_msg_for_me() updates.

default 1 year ago
parent
commit
29b6b5c717
1 changed files with 8 additions and 3 deletions
  1. 8 3
      activitypub.c

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