Added TX queue cap for issue #769

This commit is contained in:
Joseph Henry 2018-06-07 12:58:07 -07:00
parent 9463d4abe4
commit a9ca26c698
2 changed files with 11 additions and 0 deletions

View File

@ -193,6 +193,14 @@
*/
#define ZT_RX_QUEUE_SIZE 64
/**
* Size of TX queue
*
* This is about 2mb, and can be decreased for small devices. A queue smaller
* than about 4 is probably going to cause a lot of lost packets.
*/
#define ZT_TX_QUEUE_SIZE 64
/**
* Length of secret key in bytes -- 256-bit -- do not change
*/

View File

@ -503,6 +503,9 @@ void Switch::send(void *tPtr,Packet &packet,bool encrypt)
if (!_trySend(tPtr,packet,encrypt)) {
{
Mutex::Lock _l(_txQueue_m);
if (_txQueue.size() >= ZT_TX_QUEUE_SIZE) {
_txQueue.pop_front();
}
_txQueue.push_back(TXQueueEntry(dest,RR->node->now(),packet,encrypt));
}
if (!RR->topology->getPeer(tPtr,dest))