aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/game/Server/WorldSocket.cpp11
-rw-r--r--src/server/game/Server/WorldSocket.h18
2 files changed, 16 insertions, 13 deletions
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index 17363de5eb8..0e65704076d 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -31,17 +31,6 @@
#include "WorldSession.h"
#include <memory>
-class EncryptablePacket : public WorldPacket
-{
-public:
- EncryptablePacket(WorldPacket const& packet, bool encrypt) : WorldPacket(packet), _encrypt(encrypt) { }
-
- bool NeedsEncryption() const { return _encrypt; }
-
-private:
- bool _encrypt;
-};
-
using boost::asio::ip::tcp;
WorldSocket::WorldSocket(tcp::socket&& socket)
diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h
index 8bf230e8005..6f6b0848423 100644
--- a/src/server/game/Server/WorldSocket.h
+++ b/src/server/game/Server/WorldSocket.h
@@ -30,7 +30,21 @@
#include <boost/asio/ip/tcp.hpp>
using boost::asio::ip::tcp;
-class EncryptablePacket;
+class EncryptablePacket : public WorldPacket
+{
+public:
+ EncryptablePacket(WorldPacket const& packet, bool encrypt) : WorldPacket(packet), _encrypt(encrypt)
+ {
+ SocketQueueLink.store(nullptr, std::memory_order_relaxed);
+ }
+
+ bool NeedsEncryption() const { return _encrypt; }
+
+ std::atomic<EncryptablePacket*> SocketQueueLink;
+
+private:
+ bool _encrypt;
+};
namespace WorldPackets
{
@@ -110,7 +124,7 @@ private:
MessageBuffer _headerBuffer;
MessageBuffer _packetBuffer;
- MPSCQueue<EncryptablePacket> _bufferQueue;
+ MPSCQueue<EncryptablePacket, &EncryptablePacket::SocketQueueLink> _bufferQueue;
std::size_t _sendBufferSize;
QueryCallbackProcessor _queryProcessor;