kopia lustrzana https://github.com/meshtastic/firmware
Only cancel packet in Tx queue if it was already sent out via LoRa (#3191)
To avoid canceling a transmission if it was already ACKed via MQTT Co-authored-by: Ben Meadors <benmmeadors@gmail.com>pull/3189/head^2
rodzic
74b90d3505
commit
bcbc2f229d
|
@ -168,10 +168,14 @@ bool ReliableRouter::stopRetransmission(GlobalPacketId key)
|
|||
auto p = old->packet;
|
||||
auto numErased = pending.erase(key);
|
||||
assert(numErased == 1);
|
||||
// remove the 'original' (identified by originator and packet->id) from the txqueue and free it
|
||||
cancelSending(getFrom(p), p->id);
|
||||
// now free the pooled copy for retransmission too
|
||||
packetPool.release(p);
|
||||
/* Only when we already transmitted a packet via LoRa, we will cancel the packet in the Tx queue
|
||||
to avoid canceling a transmission if it was ACKed super fast via MQTT */
|
||||
if (old->numRetransmissions < NUM_RETRANSMISSIONS - 1) {
|
||||
// remove the 'original' (identified by originator and packet->id) from the txqueue and free it
|
||||
cancelSending(getFrom(p), p->id);
|
||||
// now free the pooled copy for retransmission too
|
||||
packetPool.release(p);
|
||||
}
|
||||
return true;
|
||||
} else
|
||||
return false;
|
||||
|
|
Ładowanie…
Reference in New Issue