Diff between 4de3420d3352e0773dd6e4a8ef665247a0da8bc2 and 43f0c044acf99c6a2781f0bb26e084995d3e7c98

Changed Files

File Additions Deletions Status
mesh/model.c +0 -2 modified
mesh/node.c +9 -4 modified

Full Patch

diff --git a/mesh/model.c b/mesh/model.c
index c1497de..bb5d300 100644
--- a/mesh/model.c
+++ b/mesh/model.c
@@ -547,8 +547,6 @@ static bool msg_send(struct mesh_node *node, bool cred, uint16_t src,
 			l_debug("no app key for (%x)", app_idx);
 			return false;
 		}
-
-		net_idx = appkey_net_idx(node_get_net(node), app_idx);
 	}
 
 	out = l_malloc(out_len);
diff --git a/mesh/node.c b/mesh/node.c
index ebc111a..a6e9cee 100644
--- a/mesh/node.c
+++ b/mesh/node.c
@@ -1753,7 +1753,7 @@ static struct l_dbus_message *send_call(struct l_dbus *dbus,
 	const char *sender, *ele_path;
 	struct l_dbus_message_iter iter_data;
 	struct node_element *ele;
-	uint16_t dst, app_idx, src;
+	uint16_t dst, app_idx, net_idx, src;
 	uint8_t *data;
 	uint32_t len;
 
@@ -1782,10 +1782,15 @@ static struct l_dbus_message *send_call(struct l_dbus *dbus,
 
 	if (app_idx & ~APP_IDX_MASK)
 		return dbus_error(msg, MESH_ERROR_INVALID_ARGS,
-						"Invalid key_index");
+						"Invalid key index");
+
+	net_idx = appkey_net_idx(node_get_net(node), app_idx);
+	if (net_idx == NET_IDX_INVALID)
+		return dbus_error(msg, MESH_ERROR_INVALID_ARGS,
+							"Key not found");
 
-	if (!mesh_model_send(node, src, dst, app_idx, 0, DEFAULT_TTL, false,
-								data, len))
+	if (!mesh_model_send(node, src, dst, app_idx, net_idx, DEFAULT_TTL,
+							false, data, len))
 		return dbus_error(msg, MESH_ERROR_FAILED, NULL);
 
 	return l_dbus_message_new_method_return(msg);