From ebfe9caca37a5a48ab466acecf4a0f094bdb8e62 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 14 Mar 2019 14:45:30 +0000 Subject: [PATCH] Move too-early-send check to NetworkSession --- src/pocketmine/Player.php | 5 ----- src/pocketmine/network/mcpe/NetworkSession.php | 10 ++++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 7641d9802..7ab383db2 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -2506,11 +2506,6 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener, return false; } - //Basic safety restriction. TODO: improve this - if(!$this->loggedIn and !$packet->canBeSentBeforeLogin()){ - throw new \InvalidArgumentException("Attempted to send " . get_class($packet) . " to " . $this->getName() . " too early"); - } - return $this->networkSession->sendDataPacket($packet, $immediate); } diff --git a/src/pocketmine/network/mcpe/NetworkSession.php b/src/pocketmine/network/mcpe/NetworkSession.php index 6e0751e6d..2a8f1da8f 100644 --- a/src/pocketmine/network/mcpe/NetworkSession.php +++ b/src/pocketmine/network/mcpe/NetworkSession.php @@ -49,6 +49,7 @@ use pocketmine\Server; use pocketmine\timings\Timings; use pocketmine\utils\BinaryDataException; use function bin2hex; +use function get_class; use function strlen; use function substr; use function time; @@ -76,6 +77,8 @@ class NetworkSession{ /** @var bool */ private $connected = true; + /** @var bool */ + private $loggedIn = false; /** @var int */ private $connectTime; @@ -276,6 +279,11 @@ class NetworkSession{ } public function sendDataPacket(ClientboundPacket $packet, bool $immediate = false) : bool{ + //Basic safety restriction. TODO: improve this + if(!$this->loggedIn and !$packet->canBeSentBeforeLogin()){ + throw new \InvalidArgumentException("Attempted to send " . get_class($packet) . " to " . $this->getDisplayName() . " too early"); + } + $timings = Timings::getSendDataPacketTimings($packet); $timings->startTiming(); try{ @@ -435,6 +443,8 @@ class NetworkSession{ } public function onLoginSuccess() : void{ + $this->loggedIn = true; + $pk = new PlayStatusPacket(); $pk->status = PlayStatusPacket::LOGIN_SUCCESS; $this->sendDataPacket($pk);