OSDN Git Service

core: Connect ATT IO before pairing
authorJohan Hedberg <johan.hedberg@intel.com>
Fri, 25 Jan 2013 09:44:20 +0000 (11:44 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Fri, 25 Jan 2013 09:49:48 +0000 (11:49 +0200)
Due to kernel-side issues we might miss ATT commands which arrive during
the SMP procedure. Therefore, connect ATT first and only then attempt to
pair.

src/device.c

index ea316b7..f11ce2b 100644 (file)
@@ -1411,8 +1411,12 @@ static DBusMessage *pair_device(DBusConnection *conn, DBusMessage *msg,
        device->bonding = bonding;
        bonding->device = device;
 
-       err = adapter_create_bonding(adapter, &device->bdaddr,
-                                       device->bdaddr_type, io_cap);
+       if (device_is_le(device) && !device_is_connected(device))
+               err = device_connect_le(device);
+       else
+               err = adapter_create_bonding(adapter, &device->bdaddr,
+                                               device->bdaddr_type, io_cap);
+
        if (err < 0)
                return btd_error_failed(msg, strerror(-err));