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