aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2022-04-18 12:17:14 +0200
committerjackpoz <giacomopoz@gmail.com>2022-04-18 12:17:14 +0200
commitaee4f0350ea5610b663cb07fb097f2fad256809e (patch)
tree53b60fd4680795c3d0e31bf5012d408974fbe7a6
parentc83d00a645a310c48abd454b68402d366773c4d1 (diff)
Core/PacketIO: Continue processing packets even if player is not in world
-rw-r--r--src/server/game/Server/WorldSession.cpp15
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: