summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordefault <nobody@localhost>2022-09-28 19:59:19 +0200
committerdefault <nobody@localhost>2022-09-28 19:59:19 +0200
commitc38cc09e4c593f4c7a53df6e289e8b6af03bd9ca (patch)
tree775b8f029f31195de4e02f54c5dae28c1d527350
parent484a7f1fd8305ea395ae46681e17e06ac2d81565 (diff)
Process 'Undo' + 'Follow'.
-rw-r--r--activitypub.c10
-rw-r--r--data.c8
2 files changed, 14 insertions, 4 deletions
diff --git a/activitypub.c b/activitypub.c
index 81bfa59..82bf028 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -591,11 +591,17 @@ void process_message(snac *snac, char *msg, char *req)
snac_log(snac, xs_fmt("New follower %s", actor));
}
else
-/*
if (strcmp(type, "Undo") == 0) {
+ if (strcmp(utype, "Follow") == 0) {
+ if (valid_status(follower_del(snac, actor)))
+ snac_log(snac, xs_fmt("no longer following us %s", actor));
+ else
+ snac_log(snac, xs_fmt("error deleting follower %s", actor));
+ }
+ else
+ snac_debug(snac, 1, xs_fmt("ignored 'Undo' for object type '%s'", utype));
}
else
-*/
if (strcmp(type, "Create") == 0) {
if (strcmp(utype, "Note") == 0) {
if (is_muted(snac, actor))
diff --git a/data.c b/data.c
index 1062896..9b52b94 100644
--- a/data.c
+++ b/data.c
@@ -217,13 +217,17 @@ int follower_add(snac *snac, char *actor, char *msg)
int follower_del(snac *snac, char *actor)
/* deletes a follower */
{
+ int status = 200;
xs *fn = _follower_fn(snac, actor);
- unlink(fn);
+ if (fn != NULL)
+ unlink(fn);
+ else
+ status = 404;
snac_debug(snac, 2, xs_fmt("follower_del %s %s", actor, fn));
- return 200;
+ return status;
}