From 42decaa360c31c7ed2e35c92837910daa7a3dbd8 Mon Sep 17 00:00:00 2001 From: DDuarte Date: Sat, 2 Aug 2014 23:38:25 +0100 Subject: Core/Server: Add mutex lock to PacketLog --- src/server/game/Server/Protocol/PacketLog.cpp | 4 +++- src/server/game/Server/Protocol/PacketLog.h | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Server/Protocol/PacketLog.cpp b/src/server/game/Server/Protocol/PacketLog.cpp index 62779d3fbf2..0d5168cc5a9 100644 --- a/src/server/game/Server/Protocol/PacketLog.cpp +++ b/src/server/game/Server/Protocol/PacketLog.cpp @@ -58,7 +58,7 @@ struct PacketHeader PacketLog::PacketLog() : _file(NULL) { - Initialize(); + std::call_once(_initializeFlag, &PacketLog::Initialize, this); } PacketLog::~PacketLog() @@ -99,6 +99,8 @@ void PacketLog::Initialize() void PacketLog::LogPacket(WorldPacket const& packet, Direction direction, boost::asio::ip::address addr, uint16 port) { + std::lock_guard lock(_logPacketLock); + PacketHeader header; *reinterpret_cast(header.Direction) = direction == CLIENT_TO_SERVER ? 0x47534d43 : 0x47534d53; header.ConnectionId = 0; diff --git a/src/server/game/Server/Protocol/PacketLog.h b/src/server/game/Server/Protocol/PacketLog.h index b09e853236a..36e8c675f63 100644 --- a/src/server/game/Server/Protocol/PacketLog.h +++ b/src/server/game/Server/Protocol/PacketLog.h @@ -19,7 +19,9 @@ #define TRINITY_PACKETLOG_H #include "Common.h" + #include +#include enum Direction { @@ -34,6 +36,8 @@ class PacketLog private: PacketLog(); ~PacketLog(); + std::mutex _logPacketLock; + std::once_flag _initializeFlag; public: static PacketLog* instance() -- cgit v1.2.3