From 3bedbf6596c5387f02fb6abe6ebef87e91fb542b Mon Sep 17 00:00:00 2001 From: jackpoz Date: Mon, 18 Apr 2022 12:17:14 +0200 Subject: Core/PacketIO: Continue processing packets even if player is not in world (cherry picked from commit aee4f0350ea5610b663cb07fb097f2fad256809e) --- src/server/game/Server/WorldSession.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 157e680e529..91fddf7fc82 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -370,13 +370,16 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) "Player is currently not in world yet.", GetOpcodeNameForLogging(static_cast(packet->GetOpcode())).c_str()); } } - else if (_player->IsInWorld() && AntiDOS.EvaluateOpcode(*packet, currentTime)) + else if (_player->IsInWorld()) { - sScriptMgr->OnPacketReceive(this, *packet); - opHandle->Call(this, *packet); + if(AntiDOS.EvaluateOpcode(*packet, currentTime)) + { + sScriptMgr->OnPacketReceive(this, *packet); + opHandle->Call(this, *packet); + } + else + processedPackets = MAX_PROCESSED_PACKETS_IN_SAME_WORLDSESSION_UPDATE; // break out of packet processing loop } - else - processedPackets = MAX_PROCESSED_PACKETS_IN_SAME_WORLDSESSION_UPDATE; // break out of packet processing loop // lag can cause STATUS_LOGGEDIN opcodes to arrive after the player started a transfer break; case STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT: -- cgit v1.2.3