Hi Dmitriy, On Mon, Jun 20, 2011, Dmitriy Paliy wrote: > Fix Paired property of device to be false if 'No Bonding' authentication > is used. This property is set to false when device is disconnected and > no link key is stored. Otherwise, there can be cases when device is still > valid and being claimed as paired without available bonding information. > > For instanse, use of CreateDevice method call and obex client file > transfer is such use case. > --- > src/device.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/src/device.c b/src/device.c > index ae6a0d5..e886448 100644 > --- a/src/device.c > +++ b/src/device.c > @@ -830,6 +830,14 @@ void device_remove_connection(struct btd_device *device, DBusConnection *conn) > device->disconnects = g_slist_remove(device->disconnects, msg); > } > > + if (device_is_paired(device)) { > + bdaddr_t src; > + > + adapter_get_address(device->adapter, &src); > + if (read_link_key(&src, &device->bdaddr, NULL, NULL)) > + device_set_paired(device, FALSE); > + } Coding-style wise your read_link_key call should be checking for < 0 or specifically for -ENOENT (you're calling the function as if it returned a boolean value). However, I'm thinking we might just store the no-bonding info in the device struct itself so you don't need to consult the storage in this case. I.e. in addition to device_is_paired there'd also be a device_is_bonded function which'd make the logic like: if (device_is_paired(device) && !device_is_bonded(device)) device_set_paired(device, FALSE); Thoughts? Have you checked that this works both with hciops and mgmtops? Johan -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html