Skip to content

Instantly share code, notes, and snippets.

@DDuarte
Created August 3, 2012 17:55
Show Gist options
  • Save DDuarte/3249992 to your computer and use it in GitHub Desktop.
Save DDuarte/3249992 to your computer and use it in GitHub Desktop.
Core/WorldSession: Bypass assigned handler restriction if .debug send opcode command is used
From c4432a8592c7b9b5589a742985d061e7b2e4082c Mon Sep 17 00:00:00 2001
From: Nay <[email protected]>
Date: Fri, 3 Aug 2012 18:54:37 +0100
Subject: [PATCH] Core/WorldSession: Bypass assigned handler restriction if
.debug send opcode command is used
---
src/server/game/Server/WorldSession.cpp | 11 +++++++----
src/server/game/Server/WorldSession.h | 2 +-
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 518a374..7e7d75b 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 5a8a8da..c0b2fb7 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 6accc96..874c7ab 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;
}
--
1.7.9.msysgit.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment