summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
}