From: Felix Fietkau Date: Wed, 1 May 2024 18:40:19 +0200 Subject: [PATCH] ubus: fix uc_ubus_have_uloop for eloop+uloop combination When uloop has been integrated with eloop (in hostapd/wpa_supplicant), uloop_cancelling will return false, since uloop_run is not being called. This leads to ubus.defer() calling uloop_run in a context where it can prevent the other event loop from running. Fix this by detecting event loop integration via uloop_fd_set_cb being set Signed-off-by: Felix Fietkau --- --- a/lib/ubus.c +++ b/lib/ubus.c @@ -665,6 +665,9 @@ uc_ubus_have_uloop(void) bool prev = uloop_cancelled; bool active; + if (uloop_fd_set_cb) + return true; + uloop_cancelled = true; active = uloop_cancelling(); uloop_cancelled = prev;