diff options
author | Isak Westin <isak.westin@loytec.com> | 2022-09-26 15:01:08 +0200 |
---|---|---|
committer | Brian Gix <brian.gix@intel.com> | 2022-09-26 13:14:47 -0700 |
commit | 1ef221ca020581575a3775ec60c0a28e384081be (patch) | |
tree | 6a42a92767f81f70c9c810166626d136927e9c5c | |
parent | 5b569e3d14a38247c69a16d80c5f7c8b77482505 (diff) | |
download | bluez-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.c | 12 |
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) |