From 71c163a8ee43b8dc6101668f51687f4913786610 Mon Sep 17 00:00:00 2001 From: GUVWAF Date: Sat, 19 Nov 2022 17:19:42 +0100 Subject: [PATCH] Override RoutingModule's ACK if on wrong channel --- src/mesh/MeshModule.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mesh/MeshModule.cpp b/src/mesh/MeshModule.cpp index ca1fb5b50..e8f04aadb 100644 --- a/src/mesh/MeshModule.cpp +++ b/src/mesh/MeshModule.cpp @@ -115,11 +115,11 @@ void MeshModule::callPlugins(const MeshPacket &mp, RxSource src) // no one should have already replied! assert(!currentReply); - if (mp.decoded.want_response) { - printPacket("packet on wrong channel, returning error", &mp); - currentReply = pi.allocErrorResponse(Routing_Error_NOT_AUTHORIZED, &mp); + if (mp.decoded.want_response || (isDecoded && mp.want_ack)) { + printPacket("Packet on wrong channel, returning error", &mp); + currentReply = pi.allocErrorResponse(Routing_Error_NOT_AUTHORIZED, &mp); } else - printPacket("packet on wrong channel, but can't respond", &mp); + printPacket("Packet on wrong channel, but it didn't require a response or ACK", &mp); } else { ProcessMessage handled = pi.handleReceived(mp); @@ -156,12 +156,12 @@ void MeshModule::callPlugins(const MeshPacket &mp, RxSource src) pi.currentRequest = NULL; } - if (mp.decoded.want_response && toUs) { + if ((mp.decoded.want_response || mp.want_ack) && toUs) { if (currentReply) { printPacket("Sending response", currentReply); service.sendToMesh(currentReply); currentReply = NULL; - } else if(mp.from != ourNodeNum) { + } else if(mp.decoded.want_response && mp.from != ourNodeNum) { // Note: if the message started with the local node we don't want to send a no response reply // No one wanted to reply to this requst, tell the requster that happened