Mask out random bits when doing queue ordering (#4561)

* Mask out random bits when doing queue ordering

* Parenthesis
This commit is contained in:
Jonathan Bennett
2024-08-26 15:48:47 -05:00
committed by GitHub
parent 5824a8f4c1
commit b9a8683a4b
3 changed files with 8 additions and 6 deletions

View File

@@ -20,8 +20,9 @@ bool CompareMeshPacketFunc(const meshtastic_MeshPacket *p1, const meshtastic_Mes
// If priorities differ, use that
// for equal priorities, order by id (older packets have higher priority - this will briefly be wrong when IDs roll over but
// no big deal)
return (p1p != p2p) ? (p1p < p2p) // prefer bigger priorities
: (p1->id >= p2->id); // prefer smaller packet ids
return (p1p != p2p)
? (p1p < p2p) // prefer bigger priorities
: ((p1->id & ID_COUNTER_MASK) >= (p2->id & ID_COUNTER_MASK)); // Mask to counter portion, prefer smaller packet ids
}
MeshPacketQueue::MeshPacketQueue(size_t _maxLen) : maxLen(_maxLen) {}
@@ -127,4 +128,4 @@ bool MeshPacketQueue::replaceLowerPriorityPacket(meshtastic_MeshPacket *p)
std::make_heap(queue.begin(), queue.end(), &CompareMeshPacketFunc);
return true;
}
}