Re: [PATCH BlueZ] mesh: Cancel unprovisioned scan on exit or app disconnect

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

 



Applied

On Mon, 2019-11-11 at 22:22 -0800, Inga Stotland wrote:
> If a provisioner app quits or the daemon is stopped while there's
> an active scan for unprovisioned devices in progress, the scan needs
> to be explicitly canceled.
> ---
>  mesh/manager.c |  8 ++++++++
>  mesh/manager.h |  1 +
>  mesh/node.c    | 10 ++++++++++
>  3 files changed, 19 insertions(+)
> 
> diff --git a/mesh/manager.c b/mesh/manager.c
> index 0b11b4541..adbb01280 100644
> --- a/mesh/manager.c
> +++ b/mesh/manager.c
> @@ -794,3 +794,11 @@ bool manager_dbus_init(struct l_dbus *bus)
>  
>  	return true;
>  }
> +
> +void manager_scan_cancel(struct mesh_node *node)
> +{
> +	if (scan_node != node)
> +		return;
> +
> +	scan_cancel(NULL, node);
> +}
> diff --git a/mesh/manager.h b/mesh/manager.h
> index f27ca4181..5a4c7d94a 100644
> --- a/mesh/manager.h
> +++ b/mesh/manager.h
> @@ -18,3 +18,4 @@
>   */
>  
>  bool manager_dbus_init(struct l_dbus *dbus);
> +void manager_scan_cancel(struct mesh_node *node);
> diff --git a/mesh/node.c b/mesh/node.c
> index e23f32dd1..d6dd819eb 100644
> --- a/mesh/node.c
> +++ b/mesh/node.c
> @@ -42,6 +42,7 @@
>  #include "mesh/error.h"
>  #include "mesh/dbus.h"
>  #include "mesh/agent.h"
> +#include "mesh/manager.h"
>  #include "mesh/node.h"
>  
>  #define MIN_COMP_SIZE 14
> @@ -310,6 +311,10 @@ static void free_node_resources(void *data)
>  	l_queue_destroy(node->elements, element_free);
>  	node->elements = NULL;
>  
> +	/* In case of a provisioner, stop active scanning */
> +	if (node->provisioner)
> +		manager_scan_cancel(node);
> +
>  	free_node_dbus_resources(node);
>  
>  	mesh_net_free(node->net);
> @@ -1166,6 +1171,11 @@ static void app_disc_cb(struct l_dbus *bus, void *user_data)
>  	l_info("App %s disconnected (%u)", node->owner, node->disc_watch);
>  
>  	node->disc_watch = 0;
> +
> +	/* In case of a provisioner, stop active scanning */
> +	if (node->provisioner)
> +		manager_scan_cancel(node);
> +
>  	free_node_dbus_resources(node);
>  }
>  




[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