There was a `notify` variable to keep track whether a subscriber is observing our UBus object. However, it was not properly cleaned up in `ubus_destroy`, potentially becoming stale over UBus reconnections. The variable was removed and the current state is examined when sending notifications, similarly as is done in other existing OpenWrt code.
Signed-off-by: Etan Kissling <etan.kissl...@gmail.com> --- src/ubus.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/ubus.c b/src/ubus.c index 296a496..37e36fa 100644 --- a/src/ubus.c +++ b/src/ubus.c @@ -21,7 +21,6 @@ #include <libubus.h> static struct blob_buf b; -static int notify; static int error_logged = 0; static int ubus_handle_metrics(struct ubus_context *ctx, struct ubus_object *obj, @@ -78,7 +77,6 @@ static void ubus_subscribe_cb(struct ubus_context *ctx, struct ubus_object *obj) (void)ctx; my_syslog(LOG_DEBUG, _("UBus subscription callback: %s subscriber(s)"), obj->has_subscribers ? "1" : "0"); - notify = obj->has_subscribers; } static void ubus_destroy(struct ubus_context *ubus) @@ -334,7 +332,7 @@ void ubus_event_bcast(const char *type, const char *mac, const char *ip, const c { struct ubus_context *ubus = (struct ubus_context *)daemon->ubus; - if (!ubus || !notify) + if (!ubus || !ubus_object.has_subscribers) return; CHECK(blob_buf_init(&b, BLOBMSG_TYPE_TABLE)); @@ -355,7 +353,7 @@ void ubus_event_bcast_connmark_allowlist_refused(u32 mark, const char *name) { struct ubus_context *ubus = (struct ubus_context *)daemon->ubus; - if (!ubus || !notify) + if (!ubus || !ubus_object.has_subscribers) return; CHECK(blob_buf_init(&b, 0)); @@ -369,7 +367,7 @@ void ubus_event_bcast_connmark_allowlist_resolved(u32 mark, const char *name, co { struct ubus_context *ubus = (struct ubus_context *)daemon->ubus; - if (!ubus || !notify) + if (!ubus || !ubus_object.has_subscribers) return; CHECK(blob_buf_init(&b, 0)); -- 2.30.1 (Apple Git-130) _______________________________________________ Dnsmasq-discuss mailing list Dnsmasq-discuss@lists.thekelleys.org.uk https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss