aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDDuarte <dnpd.dd@gmail.com>2014-08-02 23:38:25 +0100
committerDDuarte <dnpd.dd@gmail.com>2014-08-02 23:38:25 +0100
commit42decaa360c31c7ed2e35c92837910daa7a3dbd8 (patch)
tree38f4331b103d77ce33c90817ca1a0362f491ad1f
parentcb453fa093d205cc0539891670c04b4733d7e735 (diff)
Core/Server: Add mutex lock to PacketLog
-rw-r--r--src/server/game/Server/Protocol/PacketLog.cpp4
-rw-r--r--src/server/game/Server/Protocol/PacketLog.h4
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()