commit e2c332c68a5b2dabd7f9fff41a86f0ae60de02d9
parent 200a6a0c91b8c4132aacf4eca9033a74ce3dfc8e
Author: default <nobody@localhost>
Date: Fri, 25 Nov 2022 12:09:30 +0100
On Update + Person, call object_del() before actor_add().
Diffstat:
3 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/activitypub.c b/activitypub.c
@@ -917,7 +917,9 @@ int process_message(snac *snac, char *msg, char *req)
else
if (strcmp(type, "Update") == 0) {
if (strcmp(utype, "Person") == 0) {
+ object_del(actor);
actor_add(snac, actor, xs_dict_get(msg, "object"));
+
snac_log(snac, xs_fmt("updated actor %s", actor));
}
else
diff --git a/data.c b/data.c
@@ -433,6 +433,9 @@ int object_add(const char *id, d_char *obj)
return 204; /* No content */
}
+// if (xs_dict_get(obj, "suspended") != NULL)
+// srv_log(xs_fmt("object_add suspended: true %s", id));
+
if ((f = fopen(fn, "w")) != NULL) {
flock(fileno(f), LOCK_EX);
diff --git a/snac.h b/snac.h
@@ -57,6 +57,8 @@ int index_del(const char *fn, const char *md5);
d_char *index_list(const char *fn, int max);
d_char *index_list_desc(const char *fn, int max);
+int object_del(const char *id);
+
int follower_add(snac *snac, char *actor, char *msg);
int follower_del(snac *snac, char *actor);
int follower_check(snac *snac, char *actor);