diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 94b4305f1..aa24df888 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -2471,6 +2471,8 @@ class Server{ try{ if(strlen($payload) > 2 and substr($payload, 0, 2) === "\xfe\xfd" and $this->queryHandler instanceof QueryHandler){ $this->queryHandler->handle($interface, $address, $port, $payload); + }else{ + $this->logger->debug("Unhandled raw packet from $address $port: " . bin2hex($payload)); } }catch(\Throwable $e){ if(\pocketmine\DEBUG > 1){ diff --git a/src/pocketmine/network/query/QueryHandler.php b/src/pocketmine/network/query/QueryHandler.php index 7c6770097..2a34cddb2 100644 --- a/src/pocketmine/network/query/QueryHandler.php +++ b/src/pocketmine/network/query/QueryHandler.php @@ -58,6 +58,11 @@ class QueryHandler{ $this->server->getLogger()->info($this->server->getLanguage()->translateString("pocketmine.server.query.running", [$addr, $port])); } + private function debug(string $message) : void{ + //TODO: replace this with a proper prefixed logger + $this->server->getLogger()->debug("[Query] $message"); + } + public function regenerateInfo(){ $ev = $this->server->getQueryInformation(); $this->longData = $ev->getLongQuery(); @@ -91,7 +96,8 @@ class QueryHandler{ break; case self::STATISTICS: //Stat $token = Binary::readInt(substr($payload, 0, 4)); - if($token !== self::getTokenString($this->token, $address) and $token !== self::getTokenString($this->lastToken, $address)){ + if($token !== ($t1 = self::getTokenString($this->token, $address)) and $token !== ($t2 = self::getTokenString($this->lastToken, $address))){ + $this->debug("Bad token $token from $address $port, expected $t1 or $t2"); break; } $reply = chr(self::STATISTICS); @@ -108,6 +114,9 @@ class QueryHandler{ } $interface->sendRawPacket($address, $port, $reply); break; + default: + $this->debug("Unhandled packet from $address $port: 0x" . bin2hex($packet)); + break; } } }