Diff between 43b0855abdf408c8309c3870ad8365475214d3db and f2483bbfd8e78522ceb8cc803c410e508e66655d

Changed Files

File Additions Deletions Status
src/adapter.c +5 -0 modified
src/adapter.h +1 -0 modified
src/attrib-server.c +2 -1 modified
src/device.c +4 -2 modified
src/gatt-database.c +2 -1 modified

Full Patch

diff --git a/src/adapter.c b/src/adapter.c
index 729d31e..b81b4e8 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 f2947fe..f9178d5 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 4439c27..7c15a4e 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 99454a7..8693eb8 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 d4bf5ad..7b3ec16 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);