diff --git a/src/mesh/ReliableRouter.cpp b/src/mesh/ReliableRouter.cpp index 9a65823e..51078283 100644 --- a/src/mesh/ReliableRouter.cpp +++ b/src/mesh/ReliableRouter.cpp @@ -67,6 +67,12 @@ bool ReliableRouter::shouldFilterReceived(MeshPacket *p) sendAckNak(Routing_Error_NONE, getFrom(p), p->id, p->channel); DEBUG_MSG("acking a repeated want_ack packet\n"); } + } else if (wasSeenRecently(p, false) && p->hop_limit == HOP_RELIABLE) { + // retransmission on broadcast has hop_limit still equal to HOP_RELIABLE + DEBUG_MSG("Resending implicit ack for a repeated floodmsg\n"); + MeshPacket *tosend = packetPool.allocCopy(*p); + tosend->hop_limit--; // bump down the hop count + Router::send(tosend); } return FloodingRouter::shouldFilterReceived(p);