Added error checking for character handles
This commit is contained in:
+16
-1
@@ -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
|
||||
//-------------------------
|
||||
|
||||
@@ -102,6 +102,7 @@ private:
|
||||
void hCharacterUnload(CharacterPacket* const);
|
||||
void hQueryCharacterExists(CharacterPacket* const);
|
||||
void hCharacterMovement(CharacterPacket* const);
|
||||
void hCharacterRejection(TextPacket* const);
|
||||
|
||||
//creature management
|
||||
void hCreatureUpdate(CreaturePacket* const);
|
||||
|
||||
Reference in New Issue
Block a user