diff options
author | jackpoz <giacomopoz@gmail.com> | 2022-04-18 12:17:14 +0200 |
---|---|---|
committer | jackpoz <giacomopoz@gmail.com> | 2022-04-18 12:17:14 +0200 |
commit | aee4f0350ea5610b663cb07fb097f2fad256809e (patch) | |
tree | 53b60fd4680795c3d0e31bf5012d408974fbe7a6 | |
parent | c83d00a645a310c48abd454b68402d366773c4d1 (diff) |
Core/PacketIO: Continue processing packets even if player is not in world
-rw-r--r-- | src/server/game/Server/WorldSession.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 4500866954e..363d404befa 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -318,14 +318,17 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) "Player is currently not in world yet.", GetOpcodeNameForLogging(static_cast<OpcodeClient>(packet->GetOpcode())).c_str()); } } - else if (_player->IsInWorld() && AntiDOS.EvaluateOpcode(*packet, currentTime)) + else if (_player->IsInWorld()) { - sScriptMgr->OnPacketReceive(this, *packet); - opHandle->Call(this, *packet); - LogUnprocessedTail(packet); + if(AntiDOS.EvaluateOpcode(*packet, currentTime)) + { + sScriptMgr->OnPacketReceive(this, *packet); + opHandle->Call(this, *packet); + LogUnprocessedTail(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: |