mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-11-30 07:34:27 +08:00
android: Cancel all pending confirm name before stop discovery
If user wants to cancel discovery we should remove all the confirm name requests from mgmt queues. It is in order to make sure that stop discovery have a free way to reach kernel. This improves scenario when there is a big inflow of device found events and mgmt queues become full of confirm name requests. In such case stop discovery might stack in the queue.
This commit is contained in:
parent
08228cf45a
commit
a5ee41a24f
@ -2470,6 +2470,14 @@ static bool start_discovery(void)
|
||||
return false;
|
||||
}
|
||||
|
||||
static void cancel_pending_confirm_name(gpointer data, gpointer user_data)
|
||||
{
|
||||
struct device *dev = data;
|
||||
|
||||
mgmt_cancel(mgmt_if, dev->confirm_id);
|
||||
dev->confirm_id = 0;
|
||||
}
|
||||
|
||||
static bool stop_discovery(void)
|
||||
{
|
||||
struct mgmt_cp_stop_discovery cp;
|
||||
@ -2484,6 +2492,9 @@ static bool stop_discovery(void)
|
||||
|
||||
DBG("type=0x%x", cp.type);
|
||||
|
||||
/* Lets drop all confirm name request as we don't need it anymore */
|
||||
g_slist_foreach(cached_devices, cancel_pending_confirm_name, NULL);
|
||||
|
||||
if (mgmt_send(mgmt_if, MGMT_OP_STOP_DISCOVERY, adapter.index,
|
||||
sizeof(cp), &cp, NULL, NULL, NULL) > 0)
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user