aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2012-08-03 18:54:37 +0100
committerNay <dnpd.dd@gmail.com>2012-08-03 22:39:34 +0100
commit3577afcfaf32985ec2cd433d16056db4d2a546b2 (patch)
treeb2ff9883cd6f3c0cc7edd2b485b1ab1939f48ee8 /src
parentf53e724cfac99ceb1577002933ef9db10bcbdb1a (diff)
Core/WorldSession: Bypass assigned handler restriction if .debug send opcode command is used
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Server/WorldSession.cpp11
-rwxr-xr-xsrc/server/game/Server/WorldSession.h2
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp2
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;
}