private static unsafe void ProcessLogin(byte[] packet, Customer customer, ClientSocket client) { fixed(byte *p = packet) { var msgLogin = (MsgLogin *)p; var(user, pass) = msgLogin->GetUserPass(); var id = msgLogin->UniqueId; Console.WriteLine(user + " " + pass + " " + id); customer = new Customer { Username = user, Password = pass }; client.StateObject = customer; customer.Socket = client; if (Db.Authenticate(ref customer)) { msgLogin->UniqueId = (uint)customer.CustomerId; } else if (Db.AddCustomer(customer)) { msgLogin->UniqueId = (uint)customer.CustomerId; } customer.Send(*msgLogin); var domains = customer.Subdomains.Aggregate("", (c, s) => c + (s.Name + " " + s.IP + "#")); customer.Send(MsgDomainList.Create(domains)); } }