From 1904ce1576d914e1f265eb575c8a8d7b5ad9fb16 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 12 Feb 2017 02:21:00 +0100 Subject: [PATCH] Network/ENetPeer: Fix fragmented packet handling --- src/Nazara/Network/ENetPeer.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/Nazara/Network/ENetPeer.cpp b/src/Nazara/Network/ENetPeer.cpp index 88b5568ff..6f0824af6 100644 --- a/src/Nazara/Network/ENetPeer.cpp +++ b/src/Nazara/Network/ENetPeer.cpp @@ -205,32 +205,24 @@ namespace Nz if (packetSize > fragmentLength) { UInt32 fragmentCount = (packetSize + fragmentLength - 1) / fragmentLength; - UInt32 fragmentNumber; - UInt32 fragmentOffset; - - UInt8 commandNumber; - UInt16 startSequenceNumber; - if (fragmentCount > ENetConstants::ENetProtocol_MaximumFragmentCount) return false; + UInt8 commandNumber; + UInt16 startSequenceNumber; if ((packetRef->flags & (ENetPacketFlag_Reliable | ENetPacketFlag_UnreliableFragment)) == ENetPacketFlag_UnreliableFragment && channel.outgoingUnreliableSequenceNumber < 0xFFFF) { commandNumber = ENetProtocolCommand_SendUnreliable; - startSequenceNumber = HostToNet(channel.outgoingUnreliableSequenceNumber + 1); + startSequenceNumber = HostToNet(channel.outgoingUnreliableSequenceNumber + 1); } else { commandNumber = ENetProtocolCommand_SendFragment | ENetProtocolFlag_Acknowledge; - startSequenceNumber = HostToNet(channel.outgoingReliableSequenceNumber + 1); + startSequenceNumber = HostToNet(channel.outgoingReliableSequenceNumber + 1); } - for (fragmentNumber = 0, - fragmentOffset = 0; - fragmentOffset < packetSize; - ++fragmentNumber, - fragmentOffset += fragmentLength) + for (UInt32 fragmentNumber = 0, fragmentOffset = 0; fragmentOffset < packetSize; ++fragmentNumber, fragmentOffset += fragmentLength) { if (packetSize - fragmentOffset < fragmentLength) fragmentLength = UInt16(packetSize - fragmentOffset);