Bluetooth: Mesh: Fix sending heartbeat only when relay state changes

The heartbeat should only be sent in case the relay state actually
changes. This fixes MESH/NODE/CFG/HBP/BV-03-C.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
Johan Hedberg 2017-11-02 15:44:02 +02:00 committed by Johan Hedberg
commit bcc140dbe6

View file

@ -894,6 +894,7 @@ static void relay_set(struct bt_mesh_model *model,
if (!cfg) {
BT_WARN("No Configuration Server context available");
} else if (buf->data[0] == 0x00 || buf->data[0] == 0x01) {
bool change = (cfg->relay != buf->data[0]);
struct bt_mesh_subnet *sub;
cfg->relay = buf->data[0];
@ -905,7 +906,7 @@ static void relay_set(struct bt_mesh_model *model,
TRANSMIT_INT(cfg->relay_retransmit))
sub = bt_mesh_subnet_get(cfg->hb_pub.net_idx);
if ((cfg->hb_pub.feat & BT_MESH_FEAT_RELAY) && sub) {
if ((cfg->hb_pub.feat & BT_MESH_FEAT_RELAY) && sub && change) {
hb_send(model);
}
} else {