summaryrefslogtreecommitdiff
path: root/mesh
diff options
context:
space:
mode:
authorIsak Westin <isak.westin@loytec.com>2022-09-26 15:01:08 +0200
committerBrian Gix <brian.gix@intel.com>2022-09-26 13:14:47 -0700
commit1ef221ca020581575a3775ec60c0a28e384081be (patch)
tree6a42a92767f81f70c9c810166626d136927e9c5c /mesh
parent5b569e3d14a38247c69a16d80c5f7c8b77482505 (diff)
downloadbluez-1ef221ca020581575a3775ec60c0a28e384081be.tar.gz
mesh: Reply to HB pub set with same fields
If a Config Heartbeat Publication Set message is unsuccessfully processed, the fields in the status reply should be the same as in the original message. See MshPRFv1.0.1 section 4.4.1.2.15.
Diffstat (limited to 'mesh')
-rw-r--r--mesh/cfgmod-server.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/mesh/cfgmod-server.c b/mesh/cfgmod-server.c
index 33796d05a..9c5edf551 100644
--- a/mesh/cfgmod-server.c
+++ b/mesh/cfgmod-server.c
@@ -575,7 +575,17 @@ static uint16_t hb_publication_set(struct mesh_node *node, const uint8_t *pkt)
status = mesh_net_set_heartbeat_pub(net, dst, features, net_idx, ttl,
count_log, period_log);
- return hb_publication_get(node, status);
+ if (status != MESH_STATUS_SUCCESS) {
+ uint16_t n;
+
+ n = mesh_model_opcode_set(OP_CONFIG_HEARTBEAT_PUB_STATUS, msg);
+ msg[n++] = status;
+ memcpy(msg + n, pkt, 9);
+ n += 9;
+
+ return n;
+ } else
+ return hb_publication_get(node, status);
}
static void node_reset(void *user_data)