Treat failure of ubus_add_object() in ubus_init() as retry-able.

3c93e8eb41 regularised ubus_init()
by avoiding logging calls (it can be called before logging is up)
but it instead returned any error from ubus_add_object() which
made such an error fatal. It turns out this is awkward, so this
patch returns NULL always, so that the event-loop will continue
attemping to connect to ubus forever.

This is not necessarily optimal either, and should be looked at
by a UBUS grown-up, but it does solve the immediate problem.
This commit is contained in:
Simon Kelley
2021-06-27 21:32:10 +01:00
parent 1291865c92
commit 8a1ef367e2

View File

@@ -104,6 +104,8 @@ static void ubus_disconnect_cb(struct ubus_context *ubus)
}
}
/* Note that this cannot log, it either returns a fatal error, or NULL.
If daemon->ubus is left as NULL, it will be called again for another try. */
char *ubus_init()
{
struct ubus_context *ubus = NULL;
@@ -117,9 +119,9 @@ char *ubus_init()
if (ret)
{
ubus_destroy(ubus);
return (char *)ubus_strerror(ret);
}
return NULL;
}
ubus->connection_lost = ubus_disconnect_cb;
daemon->ubus = ubus;
error_logged = 0;