diff options
author | Nay <dnpd.dd@gmail.com> | 2012-08-03 18:54:37 +0100 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2012-08-03 22:39:34 +0100 |
commit | 3577afcfaf32985ec2cd433d16056db4d2a546b2 (patch) | |
tree | b2ff9883cd6f3c0cc7edd2b485b1ab1939f48ee8 /src | |
parent | f53e724cfac99ceb1577002933ef9db10bcbdb1a (diff) |
Core/WorldSession: Bypass assigned handler restriction if .debug send opcode command is used
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Server/WorldSession.cpp | 11 | ||||
-rwxr-xr-x | src/server/game/Server/WorldSession.h | 2 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_debug.cpp | 2 |
3 files changed, 9 insertions, 6 deletions
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 518a3743d66..7e7d75b0428 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -181,7 +181,7 @@ uint32 WorldSession::GetGuidLow() const } /// Send a packet to the client -void WorldSession::SendPacket(WorldPacket const* packet) +void WorldSession::SendPacket(WorldPacket const* packet, bool forced /*= false*/) { if (!m_Socket) return; @@ -192,10 +192,13 @@ void WorldSession::SendPacket(WorldPacket const* packet) return; } - if (!opcodeTable[packet->GetOpcode()]) + if (!forced) { - sLog->outError("Prevented sending disabled opcode %d (hex 0x%04X)", packet->GetOpcode(), packet->GetOpcode()); - return; + if (!opcodeTable[packet->GetOpcode()]) + { + sLog->outError("Prevented sending disabled opcode %d (hex 0x%04X)", packet->GetOpcode(), packet->GetOpcode()); + return; + } } #ifdef TRINITY_DEBUG diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 5a8a8da04aa..c0b2fb7e12b 100755 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -236,7 +236,7 @@ class WorldSession void ReadMovementInfo(WorldPacket& data, MovementInfo* mi); void WriteMovementInfo(WorldPacket &data, MovementInfo* mi); - void SendPacket(WorldPacket const* packet); + void SendPacket(WorldPacket const* packet, bool forced = false); void SendNotification(const char *format, ...) ATTR_PRINTF(2, 3); void SendNotification(uint32 string_id, ...); void SendPetNameInvalid(uint32 error, const std::string& name, DeclinedName *declinedName); diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 6accc96260b..874c7ab81b0 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -416,7 +416,7 @@ public: } sLog->outDebug(LOG_FILTER_NETWORKIO, "Sending opcode %u", data.GetOpcode()); data.hexlike(); - player->GetSession()->SendPacket(&data); + player->GetSession()->SendPacket(&data, true); handler->PSendSysMessage(LANG_COMMAND_OPCODESENT, data.GetOpcode(), unit->GetName()); return true; } |