From bb3f87f862781bdb55b946b99476521e14294eb6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 9 Jan 2023 00:00:39 +0000 Subject: [PATCH] NetworkSession: allow 2 batches per tick apparently InventoryTransactionPacket may arrive outside of the normal update cycle, since it's prioritized to reduce latency. --- src/network/mcpe/NetworkSession.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index ee95d6122..7e8ca2dd8 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -147,7 +147,7 @@ use const JSON_THROW_ON_ERROR; use const SORT_NUMERIC; class NetworkSession{ - private const INCOMING_PACKET_BATCH_PER_TICK = 2; //we should normally see only 1 per tick - 2 allows recovery of the budget after a lag spike + private const INCOMING_PACKET_BATCH_PER_TICK = 2; //usually max 1 per tick, but transactions may arrive separately private const INCOMING_PACKET_BATCH_MAX_BUDGET = 100; //enough to account for a 5-second lag spike /** @@ -1171,7 +1171,7 @@ class NetworkSession{ $this->logger->debug("Adding packet budget for $ticksSinceLastUpdate ticks (current budget is $this->incomingPacketBatchBudget)"); } $this->incomingPacketBatchBudget = min( - $this->incomingPacketBatchBudget + (self::INCOMING_PACKET_BATCH_PER_TICK * $ticksSinceLastUpdate), + $this->incomingPacketBatchBudget + (self::INCOMING_PACKET_BATCH_PER_TICK * 2 * $ticksSinceLastUpdate), self::INCOMING_PACKET_BATCH_MAX_BUDGET ); }