Added error checking for character handles

This commit is contained in:
2016-12-09 19:26:53 +11:00
parent e8ad19f267
commit 55abdfc7d0
2 changed files with 17 additions and 1 deletions
+16 -1
View File
@@ -458,6 +458,10 @@ void World::HandlePacket(SerialPacket* const argPacket) {
hCharacterMovement(static_cast<CharacterPacket*>(argPacket));
break;
case SerialPacketType::CHARACTER_REJECTION:
hCharacterRejection(static_cast<TextPacket*>(argPacket));
break;
//creature management
case SerialPacketType::CREATURE_UPDATE:
hCreatureUpdate(static_cast<CreaturePacket*>(argPacket));
@@ -507,7 +511,6 @@ void World::HandlePacket(SerialPacket* const argPacket) {
//general rejection messages
case SerialPacketType::REGION_REJECTION:
case SerialPacketType::CHARACTER_REJECTION:
case SerialPacketType::QUERY_REJECTION:
throw(fatal_error(static_cast<TextPacket*>(argPacket)->text));
break;
@@ -810,6 +813,18 @@ void World::hCharacterMovement(CharacterPacket* const argPacket) {
}
}
void World::hCharacterRejection(TextPacket* const argPacket) {
//NOTE: simply crap out
config["client.disconnectMessage"] = std::string() + "Character rejected: " + argPacket->text;
SetSceneSignal(SceneSignal::DISCONNECTEDSCREEN);
//avoid crashes from the heartbeat system
ClientPacket newPacket;
newPacket.type = SerialPacketType::DISCONNECT_REQUEST;
newPacket.clientIndex = clientIndex;
network.SendTo(argPacket->srcAddress, &newPacket);
}
//-------------------------
//creature management
//-------------------------