void OnConnection(object sender, SocketAsyncEventArgs e) { if (!isTransferInitiated[1]) { var clientToServer = "WORLD OF WARCRAFT CONNECTION - CLIENT TO SERVER"; var data = new byte[0x32]; Buffer.BlockCopy(dataBuffer, 0, data, 0, data.Length); var transferInitiate = new Packet(data, false); var length = transferInitiate.Read <ushort>(); var msg = transferInitiate.Read <string>(0, true); if (msg == clientToServer) { isTransferInitiated[1] = true; e.Completed -= OnConnection; e.Completed += Process; Log.Message(LogType.Debug, "Initial packet transfer for Client '{0}' successfully initialized.", GetClientIP()); client.ReceiveAsync(e); // Assign server challenge for auth digest calculations Challenge = BitConverter.ToUInt32(new byte[0].GenerateRandomKey(4), 0); AuthHandler.HandleAuthChallenge(this); } else { Log.Message(LogType.Debug, "Wrong initial packet transfer data for Client '{0}'.", GetClientIP()); Dispose(); } } else { Dispose(); } }