diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c
index 73f12c2..ff5ee3e 100644
--- a/plugins/mgmtops.c
+++ b/plugins/mgmtops.c
btd_manager_unregister_adapter(index);
+ g_slist_free_full(controllers[index].pending_uuids, g_free);
+
memset(&controllers[index], 0, sizeof(struct controller_info));
DBG("Removed controller %u", index);
mgmt_set_mode(index, MGMT_OP_SET_LE, 1);
}
-static int mgmt_update_powered(struct btd_adapter *adapter, uint32_t settings)
+static int mgmt_update_powered(struct btd_adapter *adapter,
+ struct controller_info *info,
+ uint32_t settings)
{
if (!mgmt_powered(settings)) {
btd_adapter_stop(adapter);
+ g_slist_free_full(info->pending_uuids, g_free);
+ info->pending_uuid = FALSE;
+ info->pending_class = FALSE;
return 0;
}
new_power = mgmt_powered(settings);
if (new_power != old_power)
- mgmt_update_powered(adapter, settings);
+ mgmt_update_powered(adapter, info, settings);
else if (new_power && mode_changed(settings, info->current_settings))
adapter_mode_changed(adapter, create_mode(settings));