From: Felix Fietkau Date: Tue, 28 Nov 2023 12:52:56 +0000 (+0100) Subject: libubus: fix initial subscribe with autosubscribe X-Git-Url: http://git.openwrt.org/?p=project%2Fubus.git;a=commitdiff_plain;h=f84eb5998c6ea2d34989ca2d3254e56c66139313 libubus: fix initial subscribe with autosubscribe Lookup + callbacks need to run after the subscriber object has been registered Signed-off-by: Felix Fietkau --- diff --git a/libubus-sub.c b/libubus-sub.c index e395905..80d1f1a 100644 --- a/libubus-sub.c +++ b/libubus-sub.c @@ -77,11 +77,16 @@ ubus_auto_sub_lookup(struct ubus_context *ctx, struct ubus_object_data *obj, int ubus_register_subscriber(struct ubus_context *ctx, struct ubus_subscriber *s) { struct ubus_object *obj = &s->obj; + int ret; INIT_LIST_HEAD(&s->list); obj->methods = &watch_method; obj->n_methods = 1; + ret = ubus_add_object(ctx, obj); + if (ret) + return ret; + if (s->new_obj_cb) { struct ubus_event_handler *ev = &ctx->auto_subscribe_event_handler; list_add(&s->list, &ctx->auto_subscribers); @@ -91,7 +96,7 @@ int ubus_register_subscriber(struct ubus_context *ctx, struct ubus_subscriber *s ubus_lookup(ctx, NULL, ubus_auto_sub_lookup, s); } - return ubus_add_object(ctx, obj); + return 0; } static int