1
0
Эх сурвалжийг харах

Process 'Undo' + 'Follow'.

default 3 жил өмнө
parent
commit
c38cc09e4c
2 өөрчлөгдсөн 14 нэмэгдсэн , 4 устгасан
  1. 8 2
      activitypub.c
  2. 6 2
      data.c

+ 8 - 2
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))

+ 6 - 2
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;
 }