From e91ac5ef11fa78ceafde2afaa39687141f63dbc3 Mon Sep 17 00:00:00 2001 From: Claudio Takahasi Date: Mon, 11 Apr 2011 15:25:41 -0300 Subject: [PATCH] Fix LE device creation from storage Ignore the device if it already created. This patch adds a consistency check to avoid registering the same service over basic rate and LE. --- src/adapter.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 8380a5851..9a0f68872 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2171,18 +2171,16 @@ static void create_stored_device_from_primary(char *key, char *value, struct btd_device *device; GSList *services, *uuids, *l; - l = g_slist_find_custom(adapter->devices, - key, (GCompareFunc) device_address_cmp); - if (l) - device = l->data; - else { - device = device_create(connection, adapter, key, DEVICE_TYPE_LE); - if (!device) - return; + if (g_slist_find_custom(adapter->devices, + key, (GCompareFunc) device_address_cmp)) + return; - device_set_temporary(device, FALSE); - adapter->devices = g_slist_append(adapter->devices, device); - } + device = device_create(connection, adapter, key, DEVICE_TYPE_LE); + if (!device) + return; + + device_set_temporary(device, FALSE); + adapter->devices = g_slist_append(adapter->devices, device); services = string_to_primary_list(value); if (services == NULL) -- 2.47.3