diff --git a/src/adapter.c b/src/adapter.c
index 9fadc1c..df06d1d 100644
--- a/src/adapter.c
+++ b/src/adapter.c
device_set_temporary(device, FALSE);
adapter->devices = g_slist_append(adapter->devices, device);
- device_probe_drivers(device, uuids);
list = device_services_from_record(device, uuids);
if (list)
device_register_services(connection, device, list, ATT_PSM);
+ device_probe_drivers(device, uuids);
+
g_slist_free_full(uuids, g_free);
}
uuids = g_slist_append(uuids, prim->uuid);
}
- device_probe_drivers(device, uuids);
device_register_services(connection, device, services, -1);
+ device_probe_drivers(device, uuids);
+
g_slist_free(uuids);
}
diff --git a/src/device.c b/src/device.c
index b7a3e92..7b36f5b 100644
--- a/src/device.c
+++ b/src/device.c
if (req->profiles_added) {
GSList *list;
- device_probe_drivers(device, req->profiles_added);
-
list = device_services_from_record(device, req->profiles_added);
if (list)
device_register_services(req->conn, device, list,
ATT_PSM);
+
+ device_probe_drivers(device, req->profiles_added);
}
/* Remove drivers for services removed */
uuids = g_slist_append(uuids, prim->uuid);
}
- device_probe_drivers(device, uuids);
-
device_register_services(req->conn, device, g_slist_copy(services), -1);
+ device_probe_drivers(device, uuids);
g_slist_free(uuids);
void device_register_services(DBusConnection *conn, struct btd_device *device,
GSList *prim_list, int psm)
{
+ device->primaries = g_slist_concat(device->primaries, prim_list);
device->services = attrib_client_register(conn, device, psm, NULL,
prim_list);
- device->primaries = g_slist_concat(device->primaries, prim_list);
}
GSList *btd_device_get_primaries(struct btd_device *device)