diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-02-23 22:35:26 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-02-23 22:35:26 +0100 |
| commit | 3fcea2e9d4adf26ed97d2ffad78425346782d418 (patch) | |
| tree | 87d4e7cac3e71954011dfdfa5154a6cef2f7a49a /src/server/game/Handlers/CharacterHandler.cpp | |
| parent | 880be1bc63417290bcaae5527ddcd2995a3afeb0 (diff) | |
Core/PacketIO: Handle ConnectToFailed and allow the client to reconnect up to 5 times before aborting login to world
Closes #14214
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 0385b8f1a39..4333ec5ba1e 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -794,17 +794,7 @@ void WorldSession::HandlePlayerLoginOpcode(WorldPackets::Character::PlayerLogin& return; } - boost::system::error_code ignored_error; - boost::asio::ip::tcp::endpoint instanceAddress = realm.GetAddressForClient(boost::asio::ip::address::from_string(GetRemoteAddress(), ignored_error)); - instanceAddress.port(sWorld->getIntConfig(CONFIG_PORT_INSTANCE)); - - WorldPackets::Auth::ConnectTo connectTo; - connectTo.Key = MAKE_PAIR64(GetAccountId(), CONNECTION_TYPE_INSTANCE); - connectTo.Serial = 1; - connectTo.Payload.Where = instanceAddress; - connectTo.Con = CONNECTION_TYPE_INSTANCE; - - SendPacket(connectTo.Write()); + SendConnectToInstance(WorldPackets::Auth::ConnectToSerial::WorldAttempt1); } void WorldSession::HandleContinuePlayerLogin() @@ -826,6 +816,18 @@ void WorldSession::HandleContinuePlayerLogin() _charLoginCallback = CharacterDatabase.DelayQueryHolder(holder); } +void WorldSession::AbortLogin(WorldPackets::Character::LoginFailureReason reason) +{ + if (!PlayerLoading() || GetPlayer()) + { + KickPlayer(); + return; + } + + m_playerLoading.Clear(); + SendPacket(WorldPackets::Character::CharacterLoginFailed(reason).Write()); +} + void WorldSession::HandleLoadScreenOpcode(WorldPackets::Character::LoadingScreenNotify& /*loadingScreenNotify*/) { // TODO: Do something with this packet |
