Re: [PATCH] Fix unpair device when disconnected for No Bonding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux