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));
|
hCharacterMovement(static_cast<CharacterPacket*>(argPacket));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SerialPacketType::CHARACTER_REJECTION:
|
||||||
|
hCharacterRejection(static_cast<TextPacket*>(argPacket));
|
||||||
|
break;
|
||||||
|
|
||||||
//creature management
|
//creature management
|
||||||
case SerialPacketType::CREATURE_UPDATE:
|
case SerialPacketType::CREATURE_UPDATE:
|
||||||
hCreatureUpdate(static_cast<CreaturePacket*>(argPacket));
|
hCreatureUpdate(static_cast<CreaturePacket*>(argPacket));
|
||||||
@@ -507,7 +511,6 @@ void World::HandlePacket(SerialPacket* const argPacket) {
|
|||||||
|
|
||||||
//general rejection messages
|
//general rejection messages
|
||||||
case SerialPacketType::REGION_REJECTION:
|
case SerialPacketType::REGION_REJECTION:
|
||||||
case SerialPacketType::CHARACTER_REJECTION:
|
|
||||||
case SerialPacketType::QUERY_REJECTION:
|
case SerialPacketType::QUERY_REJECTION:
|
||||||
throw(fatal_error(static_cast<TextPacket*>(argPacket)->text));
|
throw(fatal_error(static_cast<TextPacket*>(argPacket)->text));
|
||||||
break;
|
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
|
//creature management
|
||||||
//-------------------------
|
//-------------------------
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ private:
|
|||||||
void hCharacterUnload(CharacterPacket* const);
|
void hCharacterUnload(CharacterPacket* const);
|
||||||
void hQueryCharacterExists(CharacterPacket* const);
|
void hQueryCharacterExists(CharacterPacket* const);
|
||||||
void hCharacterMovement(CharacterPacket* const);
|
void hCharacterMovement(CharacterPacket* const);
|
||||||
|
void hCharacterRejection(TextPacket* const);
|
||||||
|
|
||||||
//creature management
|
//creature management
|
||||||
void hCreatureUpdate(CreaturePacket* const);
|
void hCreatureUpdate(CreaturePacket* const);
|
||||||
|
|||||||
Reference in New Issue
Block a user