From 19a6eee0446df8a2c2c548e6d5abe0a956a0ae73 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 25 Sep 2016 01:43:02 +0200 Subject: [PATCH] Network/TcpClient: Fix error when receiving an empty packet Former-commit-id: 653a77b0b059968600777e89c02144d8a3e55cf3 [formerly 338bed3ccd44ad4a683e90cd1b99598660c47048] [formerly 8136c65b123704f0243edd20558ea19d636d2127 [formerly 4c158ec5ee63b97c1d9a828f4088a2f1908f3a32]] Former-commit-id: b8491dc53c5792acadb2f9f6479e9aaec472ae05 [formerly 79127a86db6256fc749591c59663fbe7cbaddc37] Former-commit-id: 2621271910cefb53cfd612cd8246af2e10ef4bd8 --- src/Nazara/Network/TcpClient.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Nazara/Network/TcpClient.cpp b/src/Nazara/Network/TcpClient.cpp index cf123ff89..8cdeafc69 100644 --- a/src/Nazara/Network/TcpClient.cpp +++ b/src/Nazara/Network/TcpClient.cpp @@ -262,6 +262,17 @@ namespace Nz if (m_pendingPacket.headerReceived) { UInt16 packetSize = static_cast(m_pendingPacket.data.GetSize()); //< Total packet size + if (packetSize == 0) + { + // Special case: our packet carry no data + packet->Reset(packetSize); + + // And reset every state + m_pendingPacket.data.Clear(); + m_pendingPacket.headerReceived = false; + m_pendingPacket.received = 0; + return true; + } std::size_t received; if (!Receive(&m_pendingPacket.data[m_pendingPacket.received], packetSize - m_pendingPacket.received, &received))