From 4920323c7790ad66206c2b5de33e365754d07ce7 Mon Sep 17 00:00:00 2001 From: Dmitriy Paliy Date: Mon, 22 Aug 2011 16:45:39 +0300 Subject: [PATCH] Fix remove temporary link key for No Bonding This fixes regression caused by 33cdfcb0fabcfb5260953a13ae277b5abe9a322d. Temporary link key should be removed after device is disconnected if bonding information is not stored in file system. Currently, the key is deleted only when paired device is removed, or adapter is powered off. In case of No Bonding authentication, device is not paired after disconnection, which results in link key left in memory. On the other hand, device is not necessarily removed after disconnection that also leaves unneeded temporary link key in memory. Therefore, btd_adapter_remove_bonding is moved to device_set_paired(device, FALSE) covering both cases. --- src/device.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/device.c b/src/device.c index 9dd657cb3..96e798f60 100644 --- a/src/device.c +++ b/src/device.c @@ -993,7 +993,6 @@ static void device_remove_stored(struct btd_device *device) delete_entry(&src, "aliases", addr); device_set_bonded(device, FALSE); device_set_paired(device, FALSE); - btd_adapter_remove_bonding(device->adapter, &device->bdaddr); } delete_entry(&src, "profiles", addr); delete_entry(&src, "trusts", addr); @@ -2038,6 +2037,9 @@ void device_set_paired(struct btd_device *device, gboolean value) if (device->paired == value) return; + if (!value) + btd_adapter_remove_bonding(device->adapter, &device->bdaddr); + device->paired = value; emit_property_changed(conn, device->path, DEVICE_INTERFACE, "Paired", -- 2.47.3