From 2d2c0475ac8950687ae7b69e9b39b2933ba104c7 Mon Sep 17 00:00:00 2001 From: mattzzw Date: Thu, 5 Mar 2026 08:22:48 +0100 Subject: [PATCH] Update examples/simple_room_server/MyMesh.cpp Fix pow() and rand() are calculated for every forwarded packet, but we only need it for flood advert. Also fixes 'paket' typo. Co-authored-by: Wessel --- examples/simple_room_server/MyMesh.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/simple_room_server/MyMesh.cpp b/examples/simple_room_server/MyMesh.cpp index 2b11a79d..1822d00c 100644 --- a/examples/simple_room_server/MyMesh.cpp +++ b/examples/simple_room_server/MyMesh.cpp @@ -284,14 +284,15 @@ bool MyMesh::allowPacketForward(const mesh::Packet *packet) { if (_prefs.disable_fwd) return false; if (packet->isRouteFlood() && packet->path_len >= _prefs.flood_max) return false; - // Limit flood advert paket forwarding using a probabilistic reduction defined by P(h) = 0.308^(hops-1) + // Limit flood advert packet forwarding using a probabilistic reduction defined by P(h) = base^(hops-1) // https://github.com/meshcore-dev/MeshCore/issues/1223 - double_t roll_dice = (double)rand() / RAND_MAX; - double_t forw_prob = pow(_prefs.flood_advert_base, packet->path_len - 1); - if (packet->getPayloadType() == PAYLOAD_TYPE_ADVERT && packet->isRouteFlood() && roll_dice > forw_prob) - return false; + if (packet->getPayloadType() == PAYLOAD_TYPE_ADVERT && packet->isRouteFlood()) { + double roll_dice = (double)rand() / RAND_MAX; + double forw_prob = pow(_prefs.flood_advert_base, packet->path_len - 1); + if (roll_dice > forw_prob) + return false; + } - // all other packets return true; }