From f6c9b9aab0de81d6952a4f7196fb0b8d41968ace 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 bb24b365e..96818339c 100644 --- a/src/mesh/Router.cpp +++ b/src/mesh/Router.cpp @@ -351,10 +351,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