From 1f38c67bec894f704de9dda18eea06bc3436252a Mon Sep 17 00:00:00 2001 From: Anderson Lizardo Date: Tue, 14 Feb 2012 12:06:04 -0400 Subject: [PATCH] device: Fix memory leak during GATT service update GATT service updates are not supported yet. This patch avoids a memory leak and GATT service storage corruption due to trying to register GATT services twice. After adding support for Services Changed characteristic notification (which is mandatory for GATT clients), this check can be removed. --- src/device.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/device.c b/src/device.c index b410a6399..dfc8e5974 100644 --- a/src/device.c +++ b/src/device.c @@ -1982,6 +1982,14 @@ int device_browse_primary(struct btd_device *device, DBusConnection *conn, if (device->browse) return -EBUSY; + /* FIXME: GATT service updates (implemented in update_services() for + * SDP) are not supported yet. It will be supported once client side + * "Services Changed" characteristic handling is implemented. */ + if (device->primaries) { + error("Could not update GATT services"); + return -ENOSYS; + } + req = g_new0(struct browse_req, 1); req->device = btd_device_ref(device); adapter_get_address(adapter, &src); -- 2.47.3