From 4f1c661273a9994524acb8ed7d265713030be146 Mon Sep 17 00:00:00 2001 From: Tim Kourt Date: Fri, 8 Nov 2019 11:32:23 -0800 Subject: [PATCH] =?UTF-8?q?client:=20Fail=20in=20non-interactive=20mode=20?= =?UTF-8?q?if=20iwd=20service=20isn=E2=80=99t=20running?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In non-interactive mode request the managed object right away and do not wait for the service to appear. This way client can fail right away instead of endlessly waiting in non-interactive mode. --- client/dbus-proxy.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/client/dbus-proxy.c b/client/dbus-proxy.c index 26c0511d..badd36a3 100644 --- a/client/dbus-proxy.c +++ b/client/dbus-proxy.c @@ -740,11 +740,17 @@ no_agent: display_enable_cmd_prompt(); } +static void get_managed_objects(void) +{ + l_dbus_method_call(dbus, IWD_SERVICE, IWD_ROOT_PATH, + L_DBUS_INTERFACE_OBJECT_MANAGER, + "GetManagedObjects", NULL, + get_managed_objects_callback, + NULL, NULL); +} + static void service_appeared_callback(struct l_dbus *dbus, void *user_data) { - if (!command_is_interactive_mode()) - goto get_objects; - l_dbus_add_signal_watch(dbus, IWD_SERVICE, IWD_ROOT_PATH, L_DBUS_INTERFACE_OBJECT_MANAGER, "InterfacesAdded", L_DBUS_MATCH_NONE, @@ -759,12 +765,8 @@ static void service_appeared_callback(struct l_dbus *dbus, void *user_data) L_DBUS_INTERFACE_PROPERTIES, "PropertiesChanged", L_DBUS_MATCH_NONE, properties_changed_callback, NULL); -get_objects: - l_dbus_method_call(dbus, IWD_SERVICE, IWD_ROOT_PATH, - L_DBUS_INTERFACE_OBJECT_MANAGER, - "GetManagedObjects", NULL, - get_managed_objects_callback, - NULL, NULL); + + get_managed_objects(); } static void service_disappeared_callback(struct l_dbus *dbus, @@ -834,9 +836,13 @@ bool dbus_proxy_init(void) l_dbus_set_disconnect_handler(dbus, dbus_disconnect_callback, NULL, NULL); - l_dbus_add_service_watch(dbus, IWD_SERVICE, service_appeared_callback, + if (command_is_interactive_mode()) + l_dbus_add_service_watch(dbus, IWD_SERVICE, + service_appeared_callback, service_disappeared_callback, NULL, NULL); + else + get_managed_objects(); return true; }