aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/CharacterHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 20652bb9fee..9410cc7174b 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -704,6 +704,14 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact
}
std::shared_ptr<WorldPackets::Character::CharacterCreateInfo> createInfo = charCreate.CreateInfo;
+ // Reserve the name for the duration of callback chain
+ createInfo->NameToken = sCharacterCache->TryCreateCharacterWithName(createInfo->Name);
+ if (!createInfo->NameToken)
+ {
+ SendCharCreate(CHAR_CREATE_NAME_IN_USE);
+ return;
+ }
+
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHECK_NAME);
stmt->setString(0, charCreate.CreateInfo->Name);