snac2

Fork of https://codeberg.org/grunfink/snac2
git clone https://git.inz.fi/snac2
Log | Files | Refs | README | LICENSE

commit dbe60be4f3818336e7e91c6153fcf846303eed04
parent 38509f5e142511f494ed33625a25d87059c6e369
Author: default <nobody@localhost>
Date:   Wed,  2 Nov 2022 20:28:40 +0100

Fixed bug when following by @user@host.

Diffstat:
Mactivitypub.c | 13+++++++++++--
Mhtml.c | 10++++++----
2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/activitypub.c b/activitypub.c @@ -484,13 +484,22 @@ d_char *msg_delete(snac *snac, char *id) } -d_char *msg_follow(snac *snac, char *actor) +d_char *msg_follow(snac *snac, char *url_or_uid) /* creates a 'Follow' message */ { - d_char *actor_o = NULL; + xs *actor_o = NULL; + xs *actor = NULL; d_char *msg = NULL; int status; + if (xs_startswith(url_or_uid, "https:/")) + actor = xs_dup(url_or_uid); + else + if (!valid_status(webfinger_request(url_or_uid, &actor, NULL))) { + snac_log(snac, xs_fmt("cannot resolve user %s to follow", url_or_uid)); + return NULL; + } + /* request the actor */ status = actor_request(snac, actor, &actor_o); diff --git 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, if (strcmp(action, L("Follow")) == 0) { xs *msg = msg_follow(&snac, actor); - /* reload the actor from the message, in may be different */ - actor = xs_dict_get(msg, "object"); + if (msg != NULL) { + /* reload the actor from the message, in may be different */ + actor = xs_dict_get(msg, "object"); - following_add(&snac, actor, msg); + following_add(&snac, actor, msg); - enqueue_output(&snac, msg, actor, 0); + enqueue_output(&snac, msg, actor, 0); + } } else if (strcmp(action, L("Unfollow")) == 0) {