commit e428b5786524c5aea625f14cae14e86d6753e5d2
parent dc5c1ce0ac7ef39864a2346bebc6e6ecdb519dc5
Author: default <nobody@localhost>
Date: Mon, 24 Jul 2023 20:44:00 +0200
Improved Accept + implicit Follow code.
Diffstat:
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/activitypub.c b/activitypub.c
@@ -1512,7 +1512,18 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
}
else
if (strcmp(type, "Accept") == 0) { /** **/
- if (strcmp(utype, "Follow") == 0 || strcmp(utype, "(null)") == 0) { /** **/
+ if (strcmp(utype, "(null)") == 0) {
+ const char *obj_id = xs_dict_get(msg, "object");
+
+ /* if the accepted object id is a string that may
+ be created by us, it's a follow */
+ if (xs_type(obj_id) == XSTYPE_STRING &&
+ xs_startswith(obj_id, srv_baseurl) &&
+ xs_endswith(obj_id, "/Follow"))
+ utype = "Follow";
+ }
+
+ if (strcmp(utype, "Follow") == 0) { /** **/
if (following_check(snac, actor)) {
following_add(snac, actor, msg);
snac_log(snac, xs_fmt("confirmed follow from %s", actor));