From 32dcd90abfc978f0db820a96ba4ea01f2771de0f Mon Sep 17 00:00:00 2001 From: Clive Blackledge Date: Tue, 26 May 2026 04:33:11 -0700 Subject: [PATCH] Preserve forwarded position payload precision (#10554) --- src/mesh/Router.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mesh/Router.cpp b/src/mesh/Router.cpp index 6cecf4a0e..11d45a12c 100644 --- a/src/mesh/Router.cpp +++ b/src/mesh/Router.cpp @@ -369,10 +369,14 @@ ErrorCode Router::send(meshtastic_MeshPacket *p) } fixPriority(p); // Before encryption, fix the priority if it's unset - if (!applyPositionPrecisionForChannel(*p, p->channel)) { - LOG_ERROR("Dropping malformed position packet before send"); - packetPool.release(p); - return meshtastic_Routing_Error_BAD_REQUEST; + // Position precision is an originator-only privacy policy. Relays keep + // p->from as the original sender, so do not rewrite their POSITION_APP payload. + if (isFromUs(p)) { + if (!applyPositionPrecisionForChannel(*p, p->channel)) { + LOG_ERROR("Dropping malformed position packet before send"); + packetPool.release(p); + return meshtastic_Routing_Error_BAD_REQUEST; + } } // If the packet is not yet encrypted, do so now