Added check for repeated login attempts

This commit is contained in:
Obique PSWG
2017-01-02 13:47:03 -06:00
parent d58ec5ed2b
commit 2f6f64ffe7
+23 -15
View File
@@ -166,6 +166,10 @@ public class LoginService extends Service {
private void handleLogin(Player player, LoginClientId id) {
Assert.notNull(player);
if (player.getPlayerState() == PlayerState.LOGGED_IN) { // Client occasionally sends multiple login requests
sendLoginSuccessPacket(player);
return;
}
Assert.test(player.getPlayerState() == PlayerState.CONNECTED);
Assert.test(player.getPlayerServer() == PlayerServer.NONE);
player.setPlayerState(PlayerState.LOGGING_IN);
@@ -250,7 +254,7 @@ public class LoginService extends Service {
new LoginEventIntent(player.getNetworkId(), LoginEvent.LOGIN_FAIL_SERVER_ERROR).broadcast();
}
private void sendLoginSuccessPacket(Player player) throws SQLException {
private void sendLoginSuccessPacket(Player player) {
LoginClientToken token = new LoginClientToken(SESSION_TOKEN, player.getUserId(), player.getUsername());
LoginEnumCluster cluster = new LoginEnumCluster();
LoginClusterStatus clusterStatus = new LoginClusterStatus();
@@ -298,29 +302,33 @@ public class LoginService extends Service {
return "Invalid password";
}
private List <Galaxy> getGalaxies(Player p) throws SQLException {
private List <Galaxy> getGalaxies(Player p) {
List<Galaxy> galaxies = new ArrayList<>();
galaxies.add(CoreManager.getGalaxy());
return galaxies;
}
private SWGCharacter [] getCharacters(int userId) throws SQLException {
private SWGCharacter [] getCharacters(int userId) {
List <SWGCharacter> characters = new ArrayList<>();
synchronized (getCharacters) {
getCharacters.setInt(1, userId);
List <SWGCharacter> characters = new ArrayList<>();
try (ResultSet set = getCharacters.executeQuery()) {
while (set.next()) {
SWGCharacter c = new SWGCharacter();
c.setId(set.getInt("id"));
c.setName(set.getString("name"));
c.setGalaxyId(CoreManager.getGalaxyId());
c.setRaceCrc(Race.getRaceByFile(set.getString("race")).getCrc());
c.setType(1); // 1 = Normal (2 = Jedi, 3 = Spectral)
characters.add(c);
try {
getCharacters.setInt(1, userId);
try (ResultSet set = getCharacters.executeQuery()) {
while (set.next()) {
SWGCharacter c = new SWGCharacter();
c.setId(set.getInt("id"));
c.setName(set.getString("name"));
c.setGalaxyId(CoreManager.getGalaxyId());
c.setRaceCrc(Race.getRaceByFile(set.getString("race")).getCrc());
c.setType(1); // 1 = Normal (2 = Jedi, 3 = Spectral)
characters.add(c);
}
}
} catch (SQLException e) {
Log.e(this, e);
}
return characters.toArray(new SWGCharacter[characters.size()]);
}
return characters.toArray(new SWGCharacter[characters.size()]);
}
private boolean deleteCharacter(SWGObject obj) {