From ac6843562ee3d0cdca0486b8438a6ecda5bf9617 Mon Sep 17 00:00:00 2001 From: medentem Date: Thu, 9 Jan 2025 08:51:55 -0600 Subject: [PATCH] ignore relay node as well --- src/mesh/FloodingRouter.cpp | 6 +++--- src/mesh/FloodingRouter.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mesh/FloodingRouter.cpp b/src/mesh/FloodingRouter.cpp index c2a001994..bc8f557d8 100644 --- a/src/mesh/FloodingRouter.cpp +++ b/src/mesh/FloodingRouter.cpp @@ -77,7 +77,7 @@ bool FloodingRouter::perhapsRebroadcast(const meshtastic_MeshPacket *p) CoverageFilter incomingCoverage; loadCoverageFilterFromPacket(p, incomingCoverage); - float forwardProb = calculateForwardProbability(incomingCoverage, p->from); + float forwardProb = calculateForwardProbability(incomingCoverage, p->from, p->relay_node); float rnd = static_cast(rand()) / static_cast(RAND_MAX); if (rnd <= forwardProb) { @@ -162,7 +162,7 @@ void FloodingRouter::mergeMyCoverage(CoverageFilter &coverage) coverage.add(nodeDB->getNodeNum()); } -float FloodingRouter::calculateForwardProbability(const CoverageFilter &incoming, NodeNum from) +float FloodingRouter::calculateForwardProbability(const CoverageFilter &incoming, NodeNum from, NodeNum relayNode) { #ifndef USERPREFS_USE_COVERAGE_FILTER LOG_DEBUG("Coverage filter is NOT enabled."); @@ -193,7 +193,7 @@ float FloodingRouter::calculateForwardProbability(const CoverageFilter &incoming uint8_t uncovered = 0; for (auto nodeId : recentNeighbors) { - if (nodeId == from) + if (nodeId == from || nodeId == relayNode) continue; auto nodeInfo = nodeDB->getMeshNode(nodeId); diff --git a/src/mesh/FloodingRouter.h b/src/mesh/FloodingRouter.h index 5115f6da4..09e1defea 100644 --- a/src/mesh/FloodingRouter.h +++ b/src/mesh/FloodingRouter.h @@ -42,7 +42,7 @@ class FloodingRouter : public Router, protected PacketHistory void mergeMyCoverage(CoverageFilter &coverage); - float calculateForwardProbability(const CoverageFilter &incoming, NodeNum from); + float calculateForwardProbability(const CoverageFilter &incoming, NodeNum from, NodeNum relayNode); float computeRecencyWeight(uint32_t age, uint32_t timeWindowSecs);