Drop packets if toPhoneQueue is full, unless it's text/RangeTest (#2918)

This commit is contained in:
GUVWAF 2023-10-30 12:12:22 +01:00 committed by GitHub
parent 4052194dfe
commit 8b8fffda81
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -267,14 +267,22 @@ void MeshService::sendNetworkPing(NodeNum dest, bool wantReplies)
void MeshService::sendToPhone(meshtastic_MeshPacket *p)
{
perhapsDecode(p);
if (toPhoneQueue.numFree() == 0) {
if (p->decoded.portnum == meshtastic_PortNum_TEXT_MESSAGE_APP ||
p->decoded.portnum == meshtastic_PortNum_RANGE_TEST_APP) {
LOG_WARN("ToPhone queue is full, discarding oldest\n");
meshtastic_MeshPacket *d = toPhoneQueue.dequeuePtr(0);
if (d)
releaseToPool(d);
} else {
LOG_WARN("ToPhone queue is full, dropping packet.\n");
releaseToPool(p);
return;
}
}
perhapsDecode(p);
assert(toPhoneQueue.enqueue(p, 0));
fromNum++;
}