OSDN Git Service

core: Fix passing correct local address type to ATT socket
authorJohan Hedberg <johan.hedberg@intel.com>
Fri, 11 Nov 2016 12:04:18 +0000 (14:04 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Fri, 11 Nov 2016 14:16:30 +0000 (16:16 +0200)
src/adapter.c
src/adapter.h
src/attrib-server.c
src/device.c
src/gatt-database.c

index 729d31e..b81b4e8 100644 (file)
@@ -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;
index f2947fe..f9178d5 100644 (file)
@@ -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);
index 4439c27..7c15a4e 100644 (file)
@@ -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);
index 99454a7..8693eb8 100644 (file)
@@ -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,
index d4bf5ad..7b3ec16 100644 (file)
@@ -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);