logd: add support for subscribing to the log object
authorFelix Fietkau <nbd@nbd.name>
Thu, 19 Jan 2023 12:06:19 +0000 (13:06 +0100)
committerFelix Fietkau <nbd@nbd.name>
Thu, 19 Jan 2023 12:06:21 +0000 (13:06 +0100)
Provides easier access to log messages

Signed-off-by: Felix Fietkau <nbd@nbd.name>
log/logd.c

index 594b1e0421f117e7f387dab6e6ad6e59845a7c6b..94c7b2f8271618773c626b1bf70d736c1fd4b42e 100644 (file)
@@ -207,7 +207,7 @@ ubus_notify_log(struct log_head *l)
 {
        struct client *c;
 
-       if (list_empty(&clients))
+       if (list_empty(&clients) && !log_object.has_subscribers)
                return;
 
        blob_buf_init(&b, 0);
@@ -217,6 +217,9 @@ ubus_notify_log(struct log_head *l)
        blobmsg_add_u32(&b, "source", l->source);
        blobmsg_add_u64(&b, "time", (((__u64) l->ts.tv_sec) * 1000) + (l->ts.tv_nsec / 1000000));
 
+       if (log_object.has_subscribers)
+               ubus_notify(&conn.ctx, &log_object, "message", b.head, -1);
+
        list_for_each_entry(c, &clients, list)
                ustream_write(&c->s.stream, (void *) b.head, blob_len(b.head) + sizeof(struct blob_attr), false);