commit 654326a

default  ·  2022-11-18 07:21:40 +0000 UTC
parent e01f23c
New function enqueue_output_to_actor().
4 files changed,  +18, -6
M data.c
M html.c
M main.c
M snac.h
M data.c
+13, -1
 1@@ -1064,7 +1064,7 @@ void enqueue_input(snac *snac, char *msg, char *req, int retries)
 2 
 3 
 4 void enqueue_output(snac *snac, char *msg, char *inbox, int retries)
 5-/* enqueues an output message for an actor */
 6+/* enqueues an output message to an inbox */
 7 {
 8     if (xs_startswith(inbox, snac->actor)) {
 9         snac_debug(snac, 1, xs_str_new("refusing enqueue to myself"));
10@@ -1088,6 +1088,18 @@ void enqueue_output(snac *snac, char *msg, char *inbox, int retries)
11 }
12 
13 
14+void enqueue_output_by_actor(snac *snac, char *msg, char *actor, int retries)
15+/* enqueues an output message for an actor */
16+{
17+    xs *inbox = get_actor_inbox(snac, actor);
18+
19+    if (!xs_is_null(inbox))
20+        enqueue_output(snac, msg, inbox, retries);
21+    else
22+        snac_log(snac, xs_fmt("enqueue_output_by_actor cannot get inbox %s", actor));
23+}
24+
25+
26 void enqueue_email(snac *snac, char *msg, int retries)
27 /* enqueues an email message to be sent */
28 {
M html.c
+2, -3
 1@@ -1215,11 +1215,10 @@ int html_post_handler(d_char *req, char *q_path, d_char *payload, int p_size,
 2             if (msg != NULL) {
 3                 /* reload the actor from the message, in may be different */
 4                 actor = xs_dict_get(msg, "object");
 5-                xs *inbox = get_actor_inbox(&snac, actor);
 6 
 7                 following_add(&snac, actor, msg);
 8 
 9-                enqueue_output(&snac, msg, inbox, 0);
10+                enqueue_output_by_actor(&snac, msg, actor, 0);
11             }
12         }
13         else
14@@ -1232,7 +1231,7 @@ int html_post_handler(d_char *req, char *q_path, d_char *payload, int p_size,
15 
16                 following_del(&snac, actor);
17 
18-                enqueue_output(&snac, msg, actor, 0);
19+                enqueue_output_by_actor(&snac, msg, actor, 0);
20 
21                 snac_log(&snac, xs_fmt("unfollowed actor %s", actor));
22             }
M main.c
+2, -2
 1@@ -178,7 +178,7 @@ int main(int argc, char *argv[])
 2 
 3             following_add(&snac, actor, msg);
 4 
 5-            enqueue_output(&snac, msg, actor, 0);
 6+            enqueue_output_by_actor(&snac, msg, actor, 0);
 7 
 8             if (dbglevel) {
 9                 xs *j = xs_json_dumps_pp(msg, 4);
10@@ -197,7 +197,7 @@ int main(int argc, char *argv[])
11 
12             following_del(&snac, url);
13 
14-            enqueue_output(&snac, msg, url, 0);
15+            enqueue_output_by_actor(&snac, msg, url, 0);
16 
17             snac_log(&snac, xs_fmt("unfollowed actor %s", url));
18         }
M snac.h
+1, -0
1@@ -93,6 +93,7 @@ d_char *history_list(snac *snac);
2 
3 void enqueue_input(snac *snac, char *msg, char *req, int retries);
4 void enqueue_output(snac *snac, char *msg, char *inbox, int retries);
5+void enqueue_output_by_actor(snac *snac, char *msg, char *actor, int retries);
6 void enqueue_email(snac *snac, char *msg, int retries);
7 
8 d_char *queue(snac *snac);