From 73384c5ac65499b60751793ce5e03b67d09738fd Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Sun, 11 Apr 2021 09:23:34 +0800 Subject: [PATCH] mqtt: don't downlink messages from us. --- src/mqtt/MQTT.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/mqtt/MQTT.cpp b/src/mqtt/MQTT.cpp index ddaf78a0b..8a2cb7607 100644 --- a/src/mqtt/MQTT.cpp +++ b/src/mqtt/MQTT.cpp @@ -24,16 +24,19 @@ void MQTT::onPublish(char *topic, byte *payload, unsigned int length) if (!pb_decode_from_bytes(payload, length, ServiceEnvelope_fields, &e)) { DEBUG_MSG("Invalid MQTT service envelope, topic %s, len %u!\n", topic, length); } else { - DEBUG_MSG("Received MQTT topic %s, len=%u\n", topic, length); + if (strcmp(e.gateway_id, owner.id) == 0) + DEBUG_MSG("Ignoring downlink message we originally sent.\n"); + else { + if (e.packet) { + DEBUG_MSG("Received MQTT topic %s, len=%u\n", topic, length); + MeshPacket *p = packetPool.allocCopy(*e.packet); - if (e.packet) { - MeshPacket *p = packetPool.allocCopy(*e.packet); - - // ignore messages sent by us or if we don't have the channel key - if (router && p->from != nodeDB.getNodeNum() && perhapsDecode(p)) - router->enqueueReceivedMessage(p); - else - packetPool.release(p); + // ignore messages sent by us or if we don't have the channel key + if (router && p->from != nodeDB.getNodeNum() && perhapsDecode(p)) + router->enqueueReceivedMessage(p); + else + packetPool.release(p); + } } // make sure to free both strings and the MeshPacket (passing in NULL is acceptable)