Diff between 88c8968afe1d646430c4b95d02d1a6b0d0420120 and ecf001daa1658b78aedf0a39744d1e7bcca06bd5

Changed Files

File Additions Deletions Status
doc/mesh-api.txt +1 -0 modified
mesh/node.c +6 -2 modified

Full Patch

diff --git a/doc/mesh-api.txt b/doc/mesh-api.txt
index 0b341a0..0fc0896 100644
--- a/doc/mesh-api.txt
+++ b/doc/mesh-api.txt
@@ -98,6 +98,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 dae9a4b..820aeb4 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);