Skip to content

Commit b35f831

Browse files
committed
Core/PacketIO: Prevented excessive WhoOpcode spam - solves possible crash/lag method
1 parent 803accc commit b35f831

3 files changed

Lines changed: 7 additions & 1 deletion

File tree

src/server/game/Server/Protocol/Handlers/MiscHandler.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,11 @@ void WorldSession::HandleWhoOpcode(WorldPacket & recv_data)
169169
{
170170
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_WHO Message");
171171

172+
time_t now = time(NULL);
173+
if (now - timeLastWhoCommand < 5)
174+
return;
175+
else timeLastWhoCommand = now;
176+
172177
uint32 matchcount = 0;
173178

174179
uint32 level_min, level_max, racemask, classmask, zones_count, str_count;

src/server/game/Server/WorldSession.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ m_playerRecentlyLogout(false), m_playerSave(false),
9494
m_sessionDbcLocale(sWorld->GetAvailableDbcLocale(locale)),
9595
m_sessionDbLocaleIndex(locale),
9696
m_latency(0), m_TutorialsChanged(false), recruiterId(recruiter),
97-
isRecruiter(isARecruiter)
97+
isRecruiter(isARecruiter), timeLastWhoCommand(0)
9898
{
9999
if (sock)
100100
{

src/server/game/Server/WorldSession.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -949,6 +949,7 @@ class WorldSession
949949
uint32 recruiterId;
950950
bool isRecruiter;
951951
ACE_Based::LockedQueue<WorldPacket*, ACE_Thread_Mutex> _recvQueue;
952+
time_t timeLastWhoCommand;
952953
};
953954
#endif
954955
/// @}

0 commit comments

Comments
 (0)