aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Scripting')
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp24
-rw-r--r--src/server/game/Scripting/ScriptMgr.h6
2 files changed, 21 insertions, 9 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index 1b91ed1690c..0d1983ab463 100644
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -414,25 +414,37 @@ void ScriptMgr::OnSocketClose(std::shared_ptr<WorldSocket> socket, bool wasNew)
FOREACH_SCRIPT(ServerScript)->OnSocketClose(socket, wasNew);
}
-void ScriptMgr::OnPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket packet)
+void ScriptMgr::OnPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet)
{
ASSERT(socket);
- FOREACH_SCRIPT(ServerScript)->OnPacketReceive(socket, packet);
+ if (SCR_REG_LST(ServerScript).empty())
+ return;
+
+ WorldPacket copy(packet);
+ FOREACH_SCRIPT(ServerScript)->OnPacketReceive(socket, copy);
}
-void ScriptMgr::OnPacketSend(std::shared_ptr<WorldSocket> socket, WorldPacket packet)
+void ScriptMgr::OnPacketSend(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet)
{
ASSERT(socket);
- FOREACH_SCRIPT(ServerScript)->OnPacketSend(socket, packet);
+ if (SCR_REG_LST(ServerScript).empty())
+ return;
+
+ WorldPacket copy(packet);
+ FOREACH_SCRIPT(ServerScript)->OnPacketSend(socket, copy);
}
-void ScriptMgr::OnUnknownPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket packet)
+void ScriptMgr::OnUnknownPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet)
{
ASSERT(socket);
- FOREACH_SCRIPT(ServerScript)->OnUnknownPacketReceive(socket, packet);
+ if (SCR_REG_LST(ServerScript).empty())
+ return;
+
+ WorldPacket copy(packet);
+ FOREACH_SCRIPT(ServerScript)->OnUnknownPacketReceive(socket, copy);
}
void ScriptMgr::OnOpenStateChange(bool open)
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
index 325a0743d79..0b5813a7f58 100644
--- a/src/server/game/Scripting/ScriptMgr.h
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -910,9 +910,9 @@ class ScriptMgr
void OnNetworkStop();
void OnSocketOpen(std::shared_ptr<WorldSocket> socket);
void OnSocketClose(std::shared_ptr<WorldSocket> socket, bool wasNew);
- void OnPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket packet);
- void OnPacketSend(std::shared_ptr<WorldSocket> socket, WorldPacket packet);
- void OnUnknownPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket packet);
+ void OnPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet);
+ void OnPacketSend(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet);
+ void OnUnknownPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet);
public: /* WorldScript */