OSDN Git Service

core/device: Fix attempting to connect to random address over BR/EDR
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Fri, 2 Sep 2016 11:42:38 +0000 (14:42 +0300)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 5 Sep 2016 09:27:21 +0000 (12:27 +0300)
BR/EDR don't have the concept of random addresses so the only option is
to over LE in that case.

src/device.c

index fb766d1..b8556f1 100644 (file)
@@ -1748,6 +1748,10 @@ static uint8_t select_conn_bearer(struct btd_device *dev)
        else if (!dev->bredr_state.bonded && dev->le_state.bonded)
                return dev->bdaddr_type;
 
+       /* If the address is private it can only be connected over LE */
+       if (device_address_is_private(dev))
+               return dev->bdaddr_type;
+
        if (dev->bredr_seen) {
                bredr_last = current - dev->bredr_seen;
                if (bredr_last > SEEN_TRESHHOLD)