From f558fca8d64e3795b0654a90d343af1dd1d8b33c Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Tue, 8 Nov 2016 10:38:43 +0200 Subject: [PATCH] core/gatt: Don't register attribute handler until core service are registered Wait until GAP and GATT service are registered to register attribute handlers otherwise it may attempt to generate service changed without having service changed registered which leads to print errors: bluetoothd[2376]: Failed to obtain handles for "Service Changed" characteristic --- src/gatt-database.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/gatt-database.c b/src/gatt-database.c index 0877b25c0..d4bf5ad98 100644 --- a/src/gatt-database.c +++ b/src/gatt-database.c @@ -2600,12 +2600,6 @@ struct btd_gatt_database *btd_gatt_database_new(struct btd_adapter *adapter) database->profiles = queue_new(); database->ccc_callbacks = queue_new(); - database->db_id = gatt_db_register(database->db, gatt_db_service_added, - gatt_db_service_removed, - database, NULL); - if (!database->db_id) - goto fail; - addr = btd_adapter_get_address(adapter); database->le_io = bt_io_listen(connect_cb, NULL, NULL, NULL, &gerr, BT_IO_OPT_SOURCE_BDADDR, addr, @@ -2641,6 +2635,13 @@ struct btd_gatt_database *btd_gatt_database_new(struct btd_adapter *adapter) register_core_services(database); + database->db_id = gatt_db_register(database->db, gatt_db_service_added, + gatt_db_service_removed, + database, NULL); + if (!database->db_id) + goto fail; + + return database; fail: -- 2.47.3