diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 14 | ||||
-rwxr-xr-x | src/server/game/Groups/Group.h | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/ChatHandler.cpp | 42 | ||||
-rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 11 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.cpp | 43 |
6 files changed, 54 insertions, 64 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 7daeb97f5d9..cedf38cb676 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -17147,20 +17147,20 @@ void Unit::SendMoveKnockBack(Player* player, float speedXY, float speedZ, float data << float(vsin); data << uint32(0); - data.WriteByteSeq(bytes[6]); - data.WriteByteSeq(bytes[7]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[7]); data << float(speedXY); - data.WriteByteSeq(bytes[4]); - data.WriteByteSeq(bytes[5]); - data.WriteByteSeq(bytes[3]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[3]); data << float(speedZ); data << float(vcos); - data.WriteByteSeq(bytes[2]); - data.WriteByteSeq(bytes[0]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[0]); player->GetSession()->SendPacket(&data); } diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index 8676f2d81b1..b0543359a6b 100755 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -269,7 +269,7 @@ class Group void UpdatePlayerOutOfRange(Player* player); // ignore: GUID of player that will be ignored void BroadcastPacket(WorldPacket* packet, bool ignorePlayersInBGRaid, int group = -1, uint64 ignore = 0); - void BroadcastAddonMessagePacket(WorldPacket* packet, const std::string& prefix, bool ignorePlayersInBGRaid, int group, uint64 ignore); + void BroadcastAddonMessagePacket(WorldPacket* packet, const std::string& prefix, bool ignorePlayersInBGRaid, int group = -1, uint64 ignore = 0); void BroadcastReadyCheck(WorldPacket* packet); void OfflineReadyCheck(); diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 2b6f7b89b02..837e074044a 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -509,46 +509,6 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) } } -void WorldSession::HandleUnregisterAddonPrefixesOpcode(WorldPacket& /*recvPacket*/) // empty packet -{ - sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_UNREGISTER_ALL_ADDON_PREFIXES"); - - _registeredAddonPrefixes.clear(); -} - -void WorldSession::HandleAddonRegisteredPrefixesOpcode(WorldPacket& recvPacket) -{ - sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_ADDON_REGISTERED_PREFIXES"); - - // This is always sent after CMSG_UNREGISTER_ALL_ADDON_PREFIXES - - uint32 count = recvPacket.ReadBits(25); - - if (count > REGISTERED_ADDON_PREFIX_SOFTCAP) - { - // if we have hit the softcap (64) nothing should be filtered - _filterAddonMessages = false; - recvPacket.rfinish(); - return; - } - - std::vector<uint8> lengths(count); - for (uint32 i = 0; i < count; ++i) - lengths.push_back(recvPacket.ReadBits(5)); - - std::vector<std::string> prefixes(count); - for (uint32 i = 0; i < count; ++i) - _registeredAddonPrefixes.push_back(recvPacket.ReadString(lengths[i])); - - if (_registeredAddonPrefixes.size() > REGISTERED_ADDON_PREFIX_SOFTCAP) // shouldn't happen - { - _filterAddonMessages = false; - return; - } - - _filterAddonMessages = true; -} - void WorldSession::HandleAddonMessagechatOpcode(WorldPacket& recvData) { Player* sender = GetPlayer(); @@ -674,7 +634,7 @@ void WorldSession::HandleAddonMessagechatOpcode(WorldPacket& recvData) WorldPacket data; ChatHandler::FillMessageData(&data, this, type, LANG_ADDON, "", 0, message.c_str(), NULL, prefix.c_str()); - group->BroadcastAddonMessagePacket(&data, true, prefix, -1, group->GetMemberGroup(sender->GetGUID())); + group->BroadcastAddonMessagePacket(&data, prefix, true, -1, group->GetMemberGroup(sender->GetGUID())); break; } default: diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 9a8ab497d88..3b2d40f9000 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -1454,9 +1454,9 @@ void WorldSession::HandleTransmogrifyItems(WorldPacket& recvData) return; } - ObjectGuid* itemGuids = new ObjectGuid[count]; - uint32* newEntries = new uint32[count]; - uint32* slots = new uint32[count]; + std::vector<ObjectGuid> itemGuids(count, ObjectGuid(0)); + std::vector<uint32> newEntries(count, 0); + std::vector<uint32> slots(count, 0); for (uint8 i = 0; i < count; ++i) { @@ -1606,11 +1606,6 @@ void WorldSession::HandleTransmogrifyItems(WorldPacket& recvData) // ... unless client was modified if (cost) // 0 cost if reverting look player->ModifyMoney(-cost); - - - delete[] itemGuids; - delete[] newEntries; - delete[] slots; } void WorldSession::SendReforgeResult(bool success) diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index ff4f093463e..af9a1a704da 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -46,7 +46,7 @@ void InitOpcodes() DEFINE_OPCODE_HANDLER(CMSG_ACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptTradeOpcode ); DEFINE_OPCODE_HANDLER(CMSG_ACTIVATETAXI, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiOpcode ); DEFINE_OPCODE_HANDLER(CMSG_ACTIVATETAXIEXPRESS, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiExpressOpcode ); - DEFINE_OPCODE_HANDLER(CMSG_ADDON_REGISTERED_PREFIXES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::HandleAddonRegisteredPrefixesOpcode); + DEFINE_OPCODE_HANDLER(CMSG_ADDON_REGISTERED_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddonRegisteredPrefixesOpcode); DEFINE_OPCODE_HANDLER(CMSG_ADD_FRIEND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddFriendOpcode ); DEFINE_OPCODE_HANDLER(CMSG_ADD_IGNORE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddIgnoreOpcode ); //DEFINE_OPCODE_HANDLER(CMSG_ADD_VOICE_IGNORE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); @@ -514,7 +514,7 @@ void InitOpcodes() //DEFINE_OPCODE_HANDLER(CMSG_TOTEM_DESTROYED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTotemDestroyed ); DEFINE_OPCODE_HANDLER(CMSG_TRAINER_BUY_SPELL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTrainerBuySpellOpcode ); DEFINE_OPCODE_HANDLER(CMSG_TRAINER_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTrainerListOpcode ); - DEFINE_OPCODE_HANDLER(CMSG_TRANSMOGRIFY_ITEMS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTransmogrifyItems ); + DEFINE_OPCODE_HANDLER(CMSG_TRANSMOGRIFY_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogrifyItems ); DEFINE_OPCODE_HANDLER(CMSG_TURN_IN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTurnInPetitionOpcode ); DEFINE_OPCODE_HANDLER(CMSG_TUTORIAL_CLEAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTutorialClear ); DEFINE_OPCODE_HANDLER(CMSG_TUTORIAL_FLAG, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTutorialFlag ); @@ -522,7 +522,7 @@ void InitOpcodes() DEFINE_OPCODE_HANDLER(CMSG_UNACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnacceptTradeOpcode ); //DEFINE_OPCODE_HANDLER(CMSG_UNLEARN_SKILL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnlearnSkillOpcode ); //DEFINE_OPCODE_HANDLER(CMSG_UNLEARN_SPECIALIZATION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_OPCODE_HANDLER(CMSG_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::HandleUnregisterAddonPrefixesOpcode); + DEFINE_OPCODE_HANDLER(CMSG_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnregisterAddonPrefixesOpcode); DEFINE_OPCODE_HANDLER(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateAccountData ); //DEFINE_OPCODE_HANDLER(CMSG_UPDATE_MISSILE_TRAJECTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateMissileTrajectory ); //DEFINE_OPCODE_HANDLER(CMSG_UPDATE_PROJECTILE_POSITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateProjectilePosition ); diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 40726e0ab92..92db86c2a35 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -45,9 +45,6 @@ #include "Transport.h" #include "WardenWin.h" #include "WardenMac.h" -#include <algorithm> -#include <vector> -#include <string> bool MapSessionFilter::Process(WorldPacket* packet) { @@ -973,10 +970,48 @@ bool WorldSession::IsAddonRegistered(const std::string& prefix) const if (_registeredAddonPrefixes.empty()) return false; - std::vector<std::string>::iterator itr = std::find(_registeredAddonPrefixes.begin(), _registeredAddonPrefixes.end(), prefix); + std::vector<std::string>::const_iterator itr = std::find(_registeredAddonPrefixes.begin(), _registeredAddonPrefixes.end(), prefix); return itr != _registeredAddonPrefixes.end(); } +void WorldSession::HandleUnregisterAddonPrefixesOpcode(WorldPacket& /*recvPacket*/) // empty packet +{ + sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_UNREGISTER_ALL_ADDON_PREFIXES"); + + _registeredAddonPrefixes.clear(); +} + +void WorldSession::HandleAddonRegisteredPrefixesOpcode(WorldPacket& recvPacket) +{ + sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_ADDON_REGISTERED_PREFIXES"); + + // This is always sent after CMSG_UNREGISTER_ALL_ADDON_PREFIXES + + uint32 count = recvPacket.ReadBits(25); + + if (count > REGISTERED_ADDON_PREFIX_SOFTCAP) + { + // if we have hit the softcap (64) nothing should be filtered + _filterAddonMessages = false; + recvPacket.rfinish(); + return; + } + + std::vector<uint8> lengths(count); + for (uint32 i = 0; i < count; ++i) + lengths[i] = recvPacket.ReadBits(5); + + for (uint32 i = 0; i < count; ++i) + _registeredAddonPrefixes.push_back(recvPacket.ReadString(lengths[i])); + + if (_registeredAddonPrefixes.size() > REGISTERED_ADDON_PREFIX_SOFTCAP) // shouldn't happen + { + _filterAddonMessages = false; + return; + } + + _filterAddonMessages = true; +} void WorldSession::SetPlayer(Player* player) { |