summaryrefslogtreecommitdiff
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
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.
-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)