mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2026-02-06 01:28:06 +01:00
dbus: register interface before acquiring name
If the interface isn't available by the time we acquire the well-known name, clients can get confused when the expected interfaces are missing during bus activation.
This commit is contained in:
parent
3e7a8feee0
commit
b49ed01626
38
src/main.c
38
src/main.c
@ -197,29 +197,12 @@ static void request_name_callback(struct l_dbus *dbus, bool success,
|
||||
{
|
||||
if (!success) {
|
||||
l_error("Name request failed");
|
||||
goto fail_exit;
|
||||
l_main_quit();
|
||||
}
|
||||
|
||||
if (!l_dbus_object_manager_enable(dbus, "/"))
|
||||
l_warn("Unable to register the ObjectManager");
|
||||
|
||||
if (!l_dbus_object_add_interface(dbus, IWD_BASE_PATH,
|
||||
IWD_DAEMON_INTERFACE,
|
||||
NULL) ||
|
||||
!l_dbus_object_add_interface(dbus, IWD_BASE_PATH,
|
||||
L_DBUS_INTERFACE_PROPERTIES,
|
||||
NULL))
|
||||
l_info("Unable to add %s and/or %s at %s",
|
||||
IWD_DAEMON_INTERFACE, L_DBUS_INTERFACE_PROPERTIES,
|
||||
IWD_BASE_PATH);
|
||||
|
||||
/* TODO: Always request nl80211 for now, ignoring auto-loading */
|
||||
l_genl_request_family(genl, NL80211_GENL_NAME, nl80211_appeared,
|
||||
NULL, NULL);
|
||||
return;
|
||||
|
||||
fail_exit:
|
||||
l_main_quit();
|
||||
}
|
||||
|
||||
static struct l_dbus_message *iwd_dbus_get_info(struct l_dbus *dbus,
|
||||
@ -249,12 +232,25 @@ static void dbus_ready(void *user_data)
|
||||
{
|
||||
struct l_dbus *dbus = user_data;
|
||||
|
||||
l_dbus_name_acquire(dbus, "net.connman.iwd", false, false, false,
|
||||
request_name_callback, NULL);
|
||||
|
||||
l_dbus_register_interface(dbus, IWD_DAEMON_INTERFACE,
|
||||
iwd_setup_deamon_interface,
|
||||
NULL, false);
|
||||
|
||||
if (!l_dbus_object_manager_enable(dbus, "/"))
|
||||
l_warn("Unable to register the ObjectManager");
|
||||
|
||||
if (!l_dbus_object_add_interface(dbus, IWD_BASE_PATH,
|
||||
IWD_DAEMON_INTERFACE,
|
||||
NULL) ||
|
||||
!l_dbus_object_add_interface(dbus, IWD_BASE_PATH,
|
||||
L_DBUS_INTERFACE_PROPERTIES,
|
||||
NULL))
|
||||
l_info("Unable to add %s and/or %s at %s",
|
||||
IWD_DAEMON_INTERFACE, L_DBUS_INTERFACE_PROPERTIES,
|
||||
IWD_BASE_PATH);
|
||||
|
||||
l_dbus_name_acquire(dbus, "net.connman.iwd", false, false, false,
|
||||
request_name_callback, NULL);
|
||||
}
|
||||
|
||||
static void dbus_disconnected(void *user_data)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user