diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3b53c755b..181cc40d1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: image: [ubuntu-20.04] - php: [8.0.27, 8.1.14, 8.2.1] + php: [8.0.28, 8.1.16, 8.2.3] steps: - name: Build and prepare PHP cache @@ -32,7 +32,7 @@ jobs: fail-fast: false matrix: image: [ubuntu-20.04] - php: [8.0.27, 8.1.14, 8.2.1] + php: [8.0.28, 8.1.16, 8.2.3] steps: - uses: actions/checkout@v3 @@ -71,7 +71,7 @@ jobs: fail-fast: false matrix: image: [ubuntu-20.04] - php: [8.0.27, 8.1.14, 8.2.1] + php: [8.0.28, 8.1.16, 8.2.3] steps: - uses: actions/checkout@v3 @@ -110,7 +110,7 @@ jobs: fail-fast: false matrix: image: [ubuntu-20.04] - php: [8.0.27, 8.1.14, 8.2.1] + php: [8.0.28, 8.1.16, 8.2.3] steps: - uses: actions/checkout@v3 @@ -151,7 +151,7 @@ jobs: fail-fast: false matrix: image: [ubuntu-20.04] - php: [8.0.27, 8.1.14, 8.2.1] + php: [8.0.28, 8.1.16, 8.2.3] steps: - uses: actions/checkout@v3 diff --git a/composer.json b/composer.json index 9732f0de4..229249b99 100644 --- a/composer.json +++ b/composer.json @@ -34,9 +34,9 @@ "adhocore/json-comment": "^1.1", "fgrosse/phpasn1": "^2.3", "netresearch/jsonmapper": "^4.0", - "pocketmine/bedrock-block-upgrade-schema": "^1.0.0", + "pocketmine/bedrock-block-upgrade-schema": "~1.0.0", "pocketmine/bedrock-data": "~2.0.0+bedrock-1.19.60", - "pocketmine/bedrock-item-upgrade-schema": "^1.0.0", + "pocketmine/bedrock-item-upgrade-schema": "~1.0.0", "pocketmine/bedrock-protocol": "~19.3.0+bedrock-1.19.62", "pocketmine/binaryutils": "^0.2.1", "pocketmine/callback-validator": "^1.0.2", @@ -55,7 +55,7 @@ "symfony/filesystem": "^5.4" }, "require-dev": { - "phpstan/phpstan": "1.10.4", + "phpstan/phpstan": "1.10.6", "phpstan/phpstan-phpunit": "^1.1.0", "phpstan/phpstan-strict-rules": "^1.2.0", "phpunit/phpunit": "^9.2" diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 3fb741551..938f76398 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -428,32 +428,39 @@ class NetworkSession{ throw new PacketHandlingException("Unexpected non-serverbound packet"); } - $timings = Timings::getDecodeDataPacketTimings($packet); + $timings = Timings::getReceiveDataPacketTimings($packet); $timings->startTiming(); - try{ - $stream = PacketSerializer::decoder($buffer, 0, $this->packetSerializerContext); - try{ - $packet->decode($stream); - }catch(PacketDecodeException $e){ - throw PacketHandlingException::wrap($e); - } - if(!$stream->feof()){ - $remains = substr($stream->getBuffer(), $stream->getOffset()); - $this->logger->debug("Still " . strlen($remains) . " bytes unread in " . $packet->getName() . ": " . bin2hex($remains)); - } - }finally{ - $timings->stopTiming(); - } - $timings = Timings::getHandleDataPacketTimings($packet); - $timings->startTiming(); try{ - //TODO: I'm not sure DataPacketReceiveEvent should be included in the handler timings, but it needs to be - //included for now to ensure the receivePacket timings are counted the way they were before - $ev = new DataPacketReceiveEvent($this, $packet); - $ev->call(); - if(!$ev->isCancelled() && ($this->handler === null || !$packet->handle($this->handler))){ - $this->logger->debug("Unhandled " . $packet->getName() . ": " . base64_encode($stream->getBuffer())); + $decodeTimings = Timings::getDecodeDataPacketTimings($packet); + $decodeTimings->startTiming(); + try{ + $stream = PacketSerializer::decoder($buffer, 0, $this->packetSerializerContext); + try{ + $packet->decode($stream); + }catch(PacketDecodeException $e){ + throw PacketHandlingException::wrap($e); + } + if(!$stream->feof()){ + $remains = substr($stream->getBuffer(), $stream->getOffset()); + $this->logger->debug("Still " . strlen($remains) . " bytes unread in " . $packet->getName() . ": " . bin2hex($remains)); + } + }finally{ + $decodeTimings->stopTiming(); + } + + $handlerTimings = Timings::getHandleDataPacketTimings($packet); + $handlerTimings->startTiming(); + try{ + //TODO: I'm not sure DataPacketReceiveEvent should be included in the handler timings, but it needs to be + //included for now to ensure the receivePacket timings are counted the way they were before + $ev = new DataPacketReceiveEvent($this, $packet); + $ev->call(); + if(!$ev->isCancelled() && ($this->handler === null || !$packet->handle($this->handler))){ + $this->logger->debug("Unhandled " . $packet->getName() . ": " . base64_encode($stream->getBuffer())); + } + }finally{ + $handlerTimings->stopTiming(); } }finally{ $timings->stopTiming();