From afc47336e39c4bee602e65c41e16402a69073218 Mon Sep 17 00:00:00 2001 From: Szymon Janc Date: Mon, 26 Mar 2018 16:11:53 +0200 Subject: [PATCH] device: Fix storing GATT attributes This fix two issues: - not storing attributes after pairing if device is using RPA - storing attributes for temporary device if it is using static or public address Change-Id: I06cfed13e4c347a15138494cfae0be65e283ae30 Signed-off-by: Amit Purwar --- src/device.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/device.c b/src/device.c index 2acdd82..268c3d7 100644 --- a/src/device.c +++ b/src/device.c @@ -2990,11 +2990,12 @@ static void device_svc_resolved(struct btd_device *dev, uint8_t browse_type, dev->pending_paired = false; } - if (!dev->temporary) + if (!dev->temporary) { store_device_info(dev); - if (bdaddr_type != BDADDR_BREDR && err == 0) - store_services(dev); + if (bdaddr_type != BDADDR_BREDR && err == 0) + store_services(dev); + } if (req) browse_request_complete(req, browse_type, bdaddr_type, err); @@ -7710,6 +7711,12 @@ void btd_device_set_temporary(struct btd_device *device, bool temporary) adapter_whitelist_add(device->adapter, device); store_device_info(device); + + /* attributes were not stored when resolved if device was temporary */ + if (device->bdaddr_type != BDADDR_BREDR && + device->le_state.svc_resolved && + g_slist_length(device->primaries) != 0) + store_services(device); } void btd_device_set_trusted(struct btd_device *device, gboolean trusted) -- 2.7.4