From c3de15c18d2720c166e71738d120849630ba8747 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Sat, 27 Jul 2024 08:43:32 +1000 Subject: [PATCH] Fix compressed buffer not being emptied instantly in TcpPacketSocket::writeData would only cause an issue when using sendAll, resulted in rarely not connecting --- source/game/StarNetPacketSocket.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/source/game/StarNetPacketSocket.cpp b/source/game/StarNetPacketSocket.cpp index 7a0724b..cd5c749 100644 --- a/source/game/StarNetPacketSocket.cpp +++ b/source/game/StarNetPacketSocket.cpp @@ -285,12 +285,14 @@ bool TcpPacketSocket::writeData() { m_outputBuffer.clear(); m_compressedBuffer.append(compressed.ptr(), compressed.size()); - size_t written = m_socket->send(m_compressedBuffer.ptr(), m_compressedBuffer.size()); - if (written > 0) { - dataSent = true; - m_compressedBuffer.trimLeft(written); - m_outgoingStats.mix(written); - } + do { + size_t written = m_socket->send(m_compressedBuffer.ptr(), m_compressedBuffer.size()); + if (written > 0) { + dataSent = true; + m_compressedBuffer.trimLeft(written); + m_outgoingStats.mix(written); + } + } while (!m_compressedBuffer.empty()); } else { do { size_t written = m_socket->send(m_outputBuffer.ptr(), m_outputBuffer.size());