I don't understand what the issue is, but for some reason, atleast once every 10 minutes, the whole server will DC, some times this happens simultaneously for multiple rounds.
My Deadlock writer, says its a NullPointerException, and thats the only written code I have for an error. But this is what the CMD looks like during the DC.
CMD:
Code:
[6/23/13 11:19 AM]: Players online: 17
[6/23/13 11:19 AM]: Garbage collector initialized
[6/23/13 11:19 AM]: Game saved for player Rodriguez140
[6/23/13 11:19 AM]: [DEREGISTERED]: Rodriguez140!
[6/23/13 11:19 AM]: trade reset
[6/23/13 11:19 AM]: returncode:5
[6/23/13 11:19 AM]: returncode:5
[6/23/13 11:19 AM]: returncode:5
[6/23/13 11:19 AM]: returncode:5
[6/23/13 11:19 AM]: returncode:5
[6/23/13 11:19 AM]: Game saved for player Kody
[6/23/13 11:19 AM]: [DEREGISTERED]: Kody!
[6/23/13 11:19 AM]: Game saved for player Chance
[6/23/13 11:19 AM]: [DEREGISTERED]: Chance!
[6/23/13 11:19 AM]: returncode:5
[6/23/13 11:19 AM]: returncode:5
[6/23/13 11:19 AM]: Game saved for player Classified
[6/23/13 11:19 AM]: [DEREGISTERED]: Classified!
[6/23/13 11:19 AM]: Game saved for player Sweet Brown
[6/23/13 11:19 AM]: [DEREGISTERED]: Sweet Brown!
[6/23/13 11:19 AM]: Game saved for player W00townage
[6/23/13 11:19 AM]: returncode:5
[6/23/13 11:19 AM]: [DEREGISTERED]: W00townage!
[6/23/13 11:19 AM]: returncode:5
[6/23/13 11:19 AM]: returncode:5
[6/23/13 11:19 AM]: Game saved for player Zaina
[6/23/13 11:19 AM]: [DEREGISTERED]: Zaina!
[6/23/13 11:19 AM]: Game saved for player Battle1404 2
[6/23/13 11:19 AM]: [DEREGISTERED]: Battle1404 2!
[6/23/13 11:19 AM]: Game saved for player Smack A Hoe
[6/23/13 11:19 AM]: [DEREGISTERED]: Smack A Hoe!
[6/23/13 11:19 AM]: Game saved for player Gurashie
[6/23/13 11:19 AM]: [DEREGISTERED]: Gurashie!
[6/23/13 11:19 AM]: Game saved for player Santaclawspk
[6/23/13 11:19 AM]: [DEREGISTERED]: Santaclawspk!
Here is returnCode 5:
Code:
if (PlayerHandler.isPlayerOn(name)) {
returnCode = 5;
}
Here is the method isPlayerOn:
Code:
public static boolean isPlayerOn(String playerName) {
for (int i = 0; i < Config.MAX_PLAYERS; i++) {
if (players[i] == null || players[i].disconnected) {
continue;
}
if (players[i].playerName.equalsIgnoreCase(playerName)) {
return true;
}
}
return false;
}
Any help will be appreciated.
This method shows what sends the returncode to the CMD:
Code:
private static Client login(Channel channel, ISAACCipher inCipher,
ISAACCipher outCipher, int version, String name, String pass) {
int returnCode = 2;
if (!name.matches("[A-Za-z0-9 ]+")) {
returnCode = 4;
}
if (name.length() > 12) {
returnCode = 8;
}
Client cl = new Client(channel, -1);
cl.playerName = name;
cl.playerName2 = cl.playerName;
cl.playerPass = pass;
cl.outStream.packetEncryption = outCipher;
cl.saveCharacter = false;
cl.isActive = true;
if (Connection.isNamedBanned(cl.playerName)) {
returnCode = 4;
}
if (PlayerHandler.isPlayerOn(name)) {
returnCode = 5; //returncode
}
if (PlayerHandler.getPlayerCount() >= Config.MAX_PLAYERS) {
returnCode = 7;
}
if (Server.UpdateServer) {
returnCode = 14;
}
if (returnCode == 2) {
int load = PlayerSave.loadGame(cl, cl.playerName, cl.playerPass);
if (load == 0)
cl.addStarter = true;
if (load == 3) {
returnCode = 3;
cl.saveFile = false;
} else {
for (int i = 0; i < cl.playerEquipment.length; i++) {
if (cl.playerEquipment[i] == 0) {
cl.playerEquipment[i] = -1;
cl.playerEquipmentN[i] = 0;
}
}
if (!Server.playerHandler.newPlayerClient(cl)) {
returnCode = 7;
cl.saveFile = false;
} else {
cl.saveFile = true;
}
}
}
if (returnCode == 2) {
cl.saveCharacter = true;
cl.packetType = -1;
cl.packetSize = 0;
final PacketBuilder bldr = new PacketBuilder();
bldr.put((byte) 2);
if (cl.playerRights == 3) {
bldr.put((byte) 2);
} else {
bldr.put((byte) cl.playerRights);
}
bldr.put((byte) 0);
channel.write(bldr.toPacket());
} else {
System.out.println("returncode:" + returnCode);
sendReturnCode(channel, returnCode);
return null;
}
synchronized (PlayerHandler.lock) {
cl.initialize();
cl.initialized = true;
}
return cl;
}