Example #1
0
        public int Queue(byte[] packet, ClientHandler client, EventHandler events)
        {
            int i = 0;

            while (true)
            {
                int size = (packet.Length - i >= 4) ? client.GetPacketSize(ref packet, i) : 4;

                if (size > packet.Length - i)
                {
                    Log.Warning(string.Format("Found partial packet of length {0}!  Reported length should be {1}.  Storing...", packet.Length - i, size));
                    return(i);
                }

                if (size != packet.Length - i)
                {
                    Log.Warning(string.Format("Merged packet found! Size of: First = {0}, Remaining = {1}", size, packet.Length - i - size));
                }

                client.Decrypt(ref packet, i, size);

                packets.Add(new Packet(client, packet, i, size));

                i += size;

                if (i == packet.Length)
                {
                    break;
                }
            }

            return(0);
        }