summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar default2022-11-02 20:28:40 +0100
committerGravatar default2022-11-02 20:28:40 +0100
commitdbe60be4f3818336e7e91c6153fcf846303eed04 (patch)
tree13f52fe3a0f8eecb9ee3ba984a76eabf829d8c17
parentAdded the published (actor create) data to the 'people' page. (diff)
downloadsnac2-dbe60be4f3818336e7e91c6153fcf846303eed04.tar.gz
snac2-dbe60be4f3818336e7e91c6153fcf846303eed04.tar.xz
snac2-dbe60be4f3818336e7e91c6153fcf846303eed04.zip
Fixed bug when following by @user@host.
-rw-r--r--activitypub.c13
-rw-r--r--html.c10
2 files changed, 17 insertions, 6 deletions
diff --git a/activitypub.c b/activitypub.c
index 164c6e6..be1cc5d 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -484,13 +484,22 @@ d_char *msg_delete(snac *snac, char *id)
484} 484}
485 485
486 486
487d_char *msg_follow(snac *snac, char *actor) 487d_char *msg_follow(snac *snac, char *url_or_uid)
488/* creates a 'Follow' message */ 488/* creates a 'Follow' message */
489{ 489{
490 d_char *actor_o = NULL; 490 xs *actor_o = NULL;
491 xs *actor = NULL;
491 d_char *msg = NULL; 492 d_char *msg = NULL;
492 int status; 493 int status;
493 494
495 if (xs_startswith(url_or_uid, "https:/"))
496 actor = xs_dup(url_or_uid);
497 else
498 if (!valid_status(webfinger_request(url_or_uid, &actor, NULL))) {
499 snac_log(snac, xs_fmt("cannot resolve user %s to follow", url_or_uid));
500 return NULL;
501 }
502
494 /* request the actor */ 503 /* request the actor */
495 status = actor_request(snac, actor, &actor_o); 504 status = actor_request(snac, actor, &actor_o);
496 505
diff --git a/html.c b/html.c
index a6d131d..afeb5df 100644
--- a/html.c
+++ b/html.c
@@ -1197,12 +1197,14 @@ int html_post_handler(d_char *req, char *q_path, d_char *payload, int p_size,
1197 if (strcmp(action, L("Follow")) == 0) { 1197 if (strcmp(action, L("Follow")) == 0) {
1198 xs *msg = msg_follow(&snac, actor); 1198 xs *msg = msg_follow(&snac, actor);
1199 1199
1200 /* reload the actor from the message, in may be different */ 1200 if (msg != NULL) {
1201 actor = xs_dict_get(msg, "object"); 1201 /* reload the actor from the message, in may be different */
1202 actor = xs_dict_get(msg, "object");
1202 1203
1203 following_add(&snac, actor, msg); 1204 following_add(&snac, actor, msg);
1204 1205
1205 enqueue_output(&snac, msg, actor, 0); 1206 enqueue_output(&snac, msg, actor, 0);
1207 }
1206 } 1208 }
1207 else 1209 else
1208 if (strcmp(action, L("Unfollow")) == 0) { 1210 if (strcmp(action, L("Unfollow")) == 0) {