In is_msg_public(), also look at 'Announce' messages.

This commit is contained in:
default 2023-03-31 19:09:59 +02:00
parent 4070c009f1
commit c83b601f90

View file

@ -297,10 +297,16 @@ int is_msg_public(snac *snac, xs_dict *msg)
int is_msg_for_me(snac *snac, xs_dict *c_msg) int is_msg_for_me(snac *snac, xs_dict *c_msg)
/* checks if this message is for me */ /* checks if this message is for me */
{ {
char *type = xs_dict_get(c_msg, "type"); const char *type = xs_dict_get(c_msg, "type");
/* if it's an Announce by someone we don't follow, reject */
if (strcmp(type, "Announce") == 0) {
if (!following_check(snac, xs_dict_get(c_msg, "actor")))
return 0;
}
/* if it's not a Create, allow */ /* if it's not a Create, allow */
if (xs_is_null(type) || strcmp(type, "Create") != 0) if (strcmp(type, "Create") != 0)
return 1; return 1;
xs_dict *msg = xs_dict_get(c_msg, "object"); xs_dict *msg = xs_dict_get(c_msg, "object");
@ -938,6 +944,11 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
int a_status; int a_status;
int do_notify = 0; int do_notify = 0;
if (xs_is_null(actor) || xs_is_null(type)) {
snac_debug(snac, 0, xs_fmt("malformed message"));
return 1;
}
char *object, *utype; char *object, *utype;
object = xs_dict_get(msg, "object"); object = xs_dict_get(msg, "object");