diff --git a/subsys/bluetooth/mesh/net.c b/subsys/bluetooth/mesh/net.c index d791ba46f9ab..f85f3e7a050c 100644 --- a/subsys/bluetooth/mesh/net.c +++ b/subsys/bluetooth/mesh/net.c @@ -924,10 +924,13 @@ void bt_mesh_net_recv(struct net_buf_simple *data, int8_t rssi, } /* Relay if this was a group/virtual address, or if the destination - * was neither a local element nor an LPN we're Friends for. + * was neither a local element nor an LPN we're Friends for, and + * device is not in Friendship as the Low Power node or the message is not encrypted using + * friendship security credentials. */ - if (!BT_MESH_ADDR_IS_UNICAST(rx.ctx.recv_dst) || - (!rx.local_match && !rx.friend_match)) { + if ((!BT_MESH_ADDR_IS_UNICAST(rx.ctx.recv_dst) || + (!rx.local_match && !rx.friend_match)) && + (!bt_mesh_lpn_established() || !rx.friend_cred)) { net_buf_simple_restore(&buf, &state); bt_mesh_net_relay(&buf, &rx, false); }