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; }