diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.cpp | 19 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 1 |
3 files changed, 12 insertions, 13 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index df86c9b4b83..2748c0317cc 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -186,11 +186,6 @@ void WorldSession::HandleWhoOpcode(WorldPacket& recvData) { TC_LOG_DEBUG("network", "WORLD: Recvd CMSG_WHO Message"); - time_t now = time(NULL); - if (now - timeLastWhoCommand < 5) - return; - else timeLastWhoCommand = now; - uint32 matchcount = 0; uint32 level_min, level_max, racemask, classmask, zones_count, str_count; diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 81d33d30a35..a784a5d636d 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -121,7 +121,6 @@ WorldSession::WorldSession(uint32 id, WorldSocket* sock, AccountTypes sec, uint8 m_TutorialsChanged(false), recruiterId(recruiter), isRecruiter(isARecruiter), - timeLastWhoCommand(0), _RBACData(NULL) { memset(m_Tutorials, 0, sizeof(m_Tutorials)); @@ -1253,8 +1252,8 @@ bool WorldSession::DosProtection::EvaluateOpcode(WorldPacket& p, time_t time) co if (++packetCounter.amountCounter > maxPacketCounterAllowed) { dosTriggered = true; - TC_LOG_WARN("network", "AntiDOS: Account %u, IP: %s, flooding packet (opc: %u, size: %u)", - Session->GetAccountId(), Session->GetRemoteAddress().c_str(), p.GetOpcode(), (uint32)p.size()); + TC_LOG_WARN("network", "AntiDOS: Account %u, IP: %s, flooding packet (opc: %s (0x%X), count: %u)", + Session->GetAccountId(), Session->GetRemoteAddress().c_str(), opcodeTable[p.GetOpcode()].name, p.GetOpcode(), packetCounter.amountCounter); } // Then check if player is sending packets not allowed @@ -1304,6 +1303,13 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co uint32 maxPacketCounterAllowed; switch (opcode) { + case CMSG_MESSAGECHAT: + { + maxPacketCounterAllowed = 500; + break; + } + + case CMSG_ATTACKSTOP: case CMSG_ITEM_QUERY_SINGLE: case CMSG_ITEM_NAME_QUERY: case CMSG_GUILD_QUERY: @@ -1339,19 +1345,20 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co break; } - case CMSG_MESSAGECHAT: + case CMSG_REQUEST_PARTY_MEMBER_STATS: + case CMSG_WHO: { maxPacketCounterAllowed = 50; break; } + case CMSG_SETSHEATHED: case CMSG_CONTACT_LIST: { maxPacketCounterAllowed = 10; break; } - case CMSG_WHO: case CMSG_GAMEOBJ_USE: case CMSG_GAMEOBJ_REPORT_USE: case CMSG_SPELLCLICK: @@ -1429,14 +1436,12 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co case CMSG_GROUP_RAID_CONVERT: case CMSG_GROUP_CHANGE_SUB_GROUP: case CMSG_GROUP_ASSISTANT_LEADER: - case CMSG_REQUEST_PARTY_MEMBER_STATS: case CMSG_OPT_OUT_OF_LOOT: case CMSG_BATTLEMASTER_JOIN_ARENA: case CMSG_LEAVE_BATTLEFIELD: case CMSG_REPORT_PVP_AFK: case CMSG_DUEL_ACCEPTED: case CMSG_DUEL_CANCELLED: - case CMSG_SETSHEATHED: case CMSG_CALENDAR_GET_CALENDAR: case CMSG_CALENDAR_ADD_EVENT: case CMSG_CALENDAR_UPDATE_EVENT: diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 7bea0ef9a85..1b16ce88052 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -1020,7 +1020,6 @@ class WorldSession uint32 recruiterId; bool isRecruiter; ACE_Based::LockedQueue<WorldPacket*, ACE_Thread_Mutex> _recvQueue; - time_t timeLastWhoCommand; rbac::RBACData* _RBACData; WorldSession(WorldSession const& right) = delete; |