diff options
-rw-r--r-- | hcid/dbus-hci.c | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index 6d3a2e1d..d6fc0e95 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -488,18 +488,20 @@ int unregister_adapter_path(const char *path) g_slist_free(adapter->devices); } + manager_remove_adapter(adapter); + g_free(adapter->path); g_free(adapter); unreg: - if (!g_dbus_unregister_interface(connection, path, ADAPTER_INTERFACE)) { + if (!g_dbus_unregister_all_interfaces(connection, path)) { error("D-Bus failed to unregister %s object", path); return -1; } if (hcid_dbus_use_experimental()) { const char *ptr = path + ADAPTER_PATH_INDEX; - g_dbus_unregister_interface(connection, ptr, ADAPTER_INTERFACE); + g_dbus_unregister_all_interfaces(connection, ptr); } return 0; @@ -531,15 +533,15 @@ int hcid_dbus_register_device(uint16_t id) adapter->pdiscov_resolve_names = 1; if (!adapter_init(connection, path, adapter)) { - error("Adapter interface init failed"); + error("Adapter interface init failed on path %s", path); g_free(adapter); return -1; } - adapter->path = g_strdup(path); + adapter->path = g_strdup(path); if (!security_init(connection, path)) { - error("Security interface init failed"); + error("Security interface init failed on path %s", path); goto failed; } @@ -563,18 +565,11 @@ failed: int hcid_dbus_unregister_device(uint16_t id) { - struct adapter *adapter; char path[MAX_PATH_LENGTH]; - int ret; snprintf(path, sizeof(path), "%s/hci%d", BASE_PATH, id); - adapter = manager_find_adapter_by_path(path); - - manager_remove_adapter(adapter); - ret = unregister_adapter_path(path); - - return ret; + return unregister_adapter_path(path); } static void create_stored_device_from_profiles(char *key, char *value, |