private void sendAuthorizatonData(string data, NetworkStream nws, TcpClient client, ref User user) { List <User> remoteUsers = ServerSystemController.GetRegisteredUsers(); byte[] responseStream; lock (registrationLock) { if (!remoteUsers.Contains(user)) { RegisteredUsers.Add(client, user); ServerSystemController.AddUserToSystem(user); showRegisteredPlayers(); showConnectedPlayers(); responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, ProtocolConstants.OK_RESPONSE_CODE); } else { if (RegisteredUsers.ContainsValue(user)) { User userInServer = RegisteredUsers.FirstOrDefault(x => x.Value.NickName.Equals(data)).Value; TcpClient clientInServer = RegisteredUsers.FirstOrDefault(x => x.Value.NickName.Equals(data)).Key; if (userInServer.Connected) { responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, "400"); } else { User userFromServer = ServerSystemController.GetUserInServer(user); RegisteredUsers.Remove(clientInServer); RegisteredUsers.Add(client, userFromServer); showRegisteredPlayers(); showConnectedPlayers(); responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, ProtocolConstants.OK_RESPONSE_CODE); } } else { User userFromServer = ServerSystemController.GetUserInServer(user); RegisteredUsers.Add(client, userFromServer); showRegisteredPlayers(); showConnectedPlayers(); responseStream = Protocol.GenerateStream(ProtocolConstants.SendType.RESPONSE, ProtocolConstants.LOGIN, ProtocolConstants.OK_RESPONSE_CODE); } } nws.Write(responseStream, 0, responseStream.Length); } }