diff options
author | DDuarte <dnpd.dd@gmail.com> | 2014-08-02 23:38:25 +0100 |
---|---|---|
committer | DDuarte <dnpd.dd@gmail.com> | 2014-08-02 23:38:25 +0100 |
commit | 42decaa360c31c7ed2e35c92837910daa7a3dbd8 (patch) | |
tree | 38f4331b103d77ce33c90817ca1a0362f491ad1f | |
parent | cb453fa093d205cc0539891670c04b4733d7e735 (diff) |
Core/Server: Add mutex lock to PacketLog
-rw-r--r-- | src/server/game/Server/Protocol/PacketLog.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/PacketLog.h | 4 |
2 files changed, 7 insertions, 1 deletions
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<std::mutex> lock(_logPacketLock); + PacketHeader header; *reinterpret_cast<uint32*>(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 <boost/asio/ip/address.hpp> +#include <mutex> enum Direction { @@ -34,6 +36,8 @@ class PacketLog private: PacketLog(); ~PacketLog(); + std::mutex _logPacketLock; + std::once_flag _initializeFlag; public: static PacketLog* instance() |