diff options
-rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index f762e100f3d..3dfd2d58564 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -203,10 +203,11 @@ bool WorldSocket::Update() MessageBuffer buffer(_sendBufferSize); while (_bufferQueue.Dequeue(queued)) { - uint32 packetSize = queued->size(); + uint32 packetSize = queued->size() + 2 /*opcode*/; if (packetSize > MinSizeForCompression && queued->NeedsEncryption()) - packetSize = compressBound(packetSize) + sizeof(CompressedWorldPacket); + packetSize = deflateBound(_compressionStream, packetSize) + sizeof(CompressedWorldPacket); + // Flush current buffer if too small for next packet if (buffer.GetRemainingSpace() < packetSize + sizeof(PacketHeader)) { QueuePacket(std::move(buffer)); @@ -215,7 +216,7 @@ bool WorldSocket::Update() if (buffer.GetRemainingSpace() >= packetSize + sizeof(PacketHeader)) WritePacketToBuffer(*queued, buffer); - else // single packet larger than 4096 bytes + else // single packet larger than _sendBufferSize { MessageBuffer packetBuffer(packetSize + sizeof(PacketHeader)); WritePacketToBuffer(*queued, packetBuffer); |