private void Recv(TransferBuffer raw_buffer) { List <TransferBuffer> list = new List <TransferBuffer>(); lock (m_lock) { PacketIO.PacketReader reader = new PacketIO.PacketReader(raw_buffer.Buffer); while (raw_buffer.Offset < raw_buffer.Size) { ushort pLength = reader.ReadUInt16(); reader.ReadByte(); reader.ReadBytes(pLength - 3); list.Add(new TransferBuffer(raw_buffer.Buffer, raw_buffer.Offset, pLength, false)); raw_buffer.Offset += pLength; } foreach (var item in list) { var decryptedBytes = Crypto.CustomXTEA.Decrypt(item.Buffer.Skip(3).ToArray()); if (decryptedBytes.Length < 4) { Console.WriteLine("[SecurityAPI::Recv] Packet length cannot be lower than 4 bytes."); } Packet p = new Packet(decryptedBytes[0x02], decryptedBytes[0x03], decryptedBytes.Skip(0x04).ToArray()); p.Lock(); m_incoming.Add(p); } } }