From da732e4f1571f3810f71e908d121fb87c4bbf87b Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Thu, 20 Feb 2014 18:33:40 +0200 Subject: [PATCH] core: Fix initiating pairing with dual mode devices The dev->bdaddr_type indicates the LE address type in case a device suppors LE. If we've determined that we want to pair over BR/EDR we should just pass an explicit BDADDR_BREDR value. --- src/device.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/device.c b/src/device.c index e8e74d36d..def4e02ba 100644 --- a/src/device.c +++ b/src/device.c @@ -1667,11 +1667,17 @@ static DBusMessage *pair_device(DBusConnection *conn, DBusMessage *msg, * channel first and only then start pairing (there's code for * this in the ATT connect callback) */ - if (device->le && !btd_device_is_connected(device)) - err = device_connect_le(device); - else + if (device->le) { + if (!btd_device_is_connected(device)) + err = device_connect_le(device); + else + err = adapter_create_bonding(adapter, &device->bdaddr, + device->bdaddr_type, + io_cap); + } else { err = adapter_create_bonding(adapter, &device->bdaddr, - device->bdaddr_type, io_cap); + BDADDR_BREDR, io_cap); + } if (err < 0) return btd_error_failed(msg, strerror(-err)); -- 2.47.3