2021-08-25 16:57:14

by David Lechner

[permalink] [raw]
Subject: [PATCH BlueZ v2 2/2] device: set le_state.svc_resolved = false in gatt_cache_cleanup()

When the GATT cache is cleared, there is no longer a list of GATT
services, so we need to set le_state.svc_resolved = false so that
the next time the device connects, it will enumerate the services
again.

This partially fixes an issue where the UUIDs D-Bus property was empty
after scanning, connecting, disconnecting and scanning again when
[GATT] Cache = yes is set in main.conf.

Issue: https://github.com/bluez/bluez/issues/192
Suggested-by: Luiz Augusto von Dentz <[email protected]>
Signed-off-by: David Lechner <[email protected]>
---
src/device.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/src/device.c b/src/device.c
index 53ef3e9a1..6d534c488 100644
--- a/src/device.c
+++ b/src/device.c
@@ -580,6 +580,7 @@ static void gatt_cache_cleanup(struct btd_device *device)

bt_gatt_client_cancel_all(device->client);
gatt_db_clear(device->db);
+ device->le_state.svc_resolved = false;
}

static void gatt_client_cleanup(struct btd_device *device)
--
2.25.1