88 $stream = new ByteBufferReader($packet);
89 $header = $stream->readByteArray(2);
90 if($header !==
"\xfe\xfd"){
93 $packetType = Byte::readUnsigned($stream);
94 $sessionID = BE::readUnsignedInt($stream);
98 $writer =
new ByteBufferWriter();
99 Byte::writeUnsigned($writer, self::HANDSHAKE);
100 BE::writeUnsignedInt($writer, $sessionID);
101 $writer->writeByteArray(self::getTokenString($this->token, $address) .
"\x00");
103 $interface->
sendRawPacket($address, $port, $writer->getData());
106 case self::STATISTICS:
107 $token = BE::readUnsignedInt($stream);
108 if($token !== ($t1 = self::getTokenString($this->token, $address)) && $token !== ($t2 = self::getTokenString($this->lastToken, $address))){
109 $this->logger->debug(
"Bad token $token from $address $port, expected $t1 or $t2");
113 $writer =
new ByteBufferWriter();
114 Byte::writeUnsigned($writer, self::STATISTICS);
115 BE::writeUnsignedInt($writer, $sessionID);
117 $remaining = $stream->getUnreadLength();
118 if($remaining === 4){
119 $writer->writeByteArray($this->
server->getQueryInformation()->getLongQuery());
121 $writer->writeByteArray($this->
server->getQueryInformation()->getShortQuery());
123 $interface->
sendRawPacket($address, $port, $writer->getData());
129 }
catch(DataDecodeException $e){
130 $this->logger->debug(
"Bad packet from $address $port: " . $e->getMessage());