From f2483bbfd8e78522ceb8cc803c410e508e66655d Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Fri, 11 Nov 2016 14:04:18 +0200 Subject: [PATCH] core: Fix passing correct local address type to ATT socket --- src/adapter.c | 5 +++++ src/adapter.h | 1 + src/attrib-server.c | 3 ++- src/device.c | 6 ++++-- src/gatt-database.c | 3 ++- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 729d31e80..b81b4e8f5 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -438,6 +438,11 @@ static const char *adapter_dir(struct btd_adapter *adapter) return dir; } +uint8_t btd_adapter_get_address_type(struct btd_adapter *adapter) +{ + return adapter->bdaddr_type; +} + static void store_adapter_info(struct btd_adapter *adapter) { GKeyFile *key_file; diff --git a/src/adapter.h b/src/adapter.h index f2947feb2..f9178d59e 100644 --- a/src/adapter.h +++ b/src/adapter.h @@ -92,6 +92,7 @@ struct btd_device *btd_adapter_find_device(struct btd_adapter *adapter, const char *adapter_get_path(struct btd_adapter *adapter); const bdaddr_t *btd_adapter_get_address(struct btd_adapter *adapter); +uint8_t btd_adapter_get_address_type(struct btd_adapter *adapter); int adapter_set_name(struct btd_adapter *adapter, const char *name); int adapter_service_add(struct btd_adapter *adapter, sdp_record_t *rec); diff --git a/src/attrib-server.c b/src/attrib-server.c index 4439c27ab..7c15a4e8f 100644 --- a/src/attrib-server.c +++ b/src/attrib-server.c @@ -1383,7 +1383,8 @@ int btd_adapter_gatt_server_start(struct btd_adapter *adapter) server->le_io = bt_io_listen(connect_event, NULL, &server->le_io, NULL, &gerr, BT_IO_OPT_SOURCE_BDADDR, addr, - BT_IO_OPT_SOURCE_TYPE, BDADDR_LE_PUBLIC, + BT_IO_OPT_SOURCE_TYPE, + btd_adapter_get_address_type(adapter), BT_IO_OPT_CID, ATT_CID, BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW, BT_IO_OPT_INVALID); diff --git a/src/device.c b/src/device.c index 99454a780..8693eb826 100644 --- a/src/device.c +++ b/src/device.c @@ -4925,7 +4925,8 @@ int device_connect_le(struct btd_device *dev) io = bt_io_connect(att_connect_cb, dev, NULL, &gerr, BT_IO_OPT_SOURCE_BDADDR, btd_adapter_get_address(adapter), - BT_IO_OPT_SOURCE_TYPE, BDADDR_LE_PUBLIC, + BT_IO_OPT_SOURCE_TYPE, + btd_adapter_get_address_type(adapter), BT_IO_OPT_DEST_BDADDR, &dev->bdaddr, BT_IO_OPT_DEST_TYPE, dev->bdaddr_type, BT_IO_OPT_CID, ATT_CID, @@ -5012,7 +5013,8 @@ static int device_browse_gatt(struct btd_device *device, DBusMessage *msg) device, NULL, NULL, BT_IO_OPT_SOURCE_BDADDR, btd_adapter_get_address(adapter), - BT_IO_OPT_SOURCE_TYPE, BDADDR_LE_PUBLIC, + BT_IO_OPT_SOURCE_TYPE, + btd_adapter_get_address_type(adapter), BT_IO_OPT_DEST_BDADDR, &device->bdaddr, BT_IO_OPT_DEST_TYPE, device->bdaddr_type, BT_IO_OPT_CID, ATT_CID, diff --git a/src/gatt-database.c b/src/gatt-database.c index d4bf5ad98..7b3ec1690 100644 --- a/src/gatt-database.c +++ b/src/gatt-database.c @@ -2603,7 +2603,8 @@ struct btd_gatt_database *btd_gatt_database_new(struct btd_adapter *adapter) addr = btd_adapter_get_address(adapter); database->le_io = bt_io_listen(connect_cb, NULL, NULL, NULL, &gerr, BT_IO_OPT_SOURCE_BDADDR, addr, - BT_IO_OPT_SOURCE_TYPE, BDADDR_LE_PUBLIC, + BT_IO_OPT_SOURCE_TYPE, + btd_adapter_get_address_type(adapter), BT_IO_OPT_CID, ATT_CID, BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW, BT_IO_OPT_INVALID); -- 2.47.3