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());