[PATCH BlueZ] mesh: Allow only one app attachment per node

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

 



If a node is already attached to an application process,
disallow another appication to attach to the same node.
This means that an Attach() method called with the token
identifying a node that is already in use, returns an error
org.bluez.mesh.Error.AlreadyExists
---
 doc/mesh-api.txt | 1 +
 mesh/node.c      | 8 ++++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/doc/mesh-api.txt b/doc/mesh-api.txt
index f034bc900..698e7ca4e 100644
--- a/doc/mesh-api.txt
+++ b/doc/mesh-api.txt
@@ -99,6 +99,7 @@ Methods:
 		PossibleErrors:
 			org.bluez.mesh.Error.InvalidArguments
 			org.bluez.mesh.Error.NotFound,
+			org.bluez.mesh.Error.AlreadyExists,
 			org.bluez.mesh.Error.Failed
 
 	void Leave(uint64 token)
diff --git a/mesh/node.c b/mesh/node.c
index 5431a9e9c..e7016ce75 100644
--- a/mesh/node.c
+++ b/mesh/node.c
@@ -1146,9 +1146,13 @@ int node_attach(const char *app_path, const char *sender, uint64_t token,
 	if (!node)
 		return MESH_ERROR_NOT_FOUND;
 
-	/* TODO: decide what to do if previous node->app_path is not NULL */
-	node->app_path = l_strdup(app_path);
+	/* Check if the node is already in use */
+	if (node->owner) {
+		l_warn("The node is already in use");
+		return MESH_ERROR_ALREADY_EXISTS;
+	}
 
+	node->app_path = l_strdup(app_path);
 	node->owner = l_strdup(sender);
 
 	req = l_new(struct attach_obj_request, 1);
-- 
2.17.2




[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