From a87095476249c6eca4e8135d9510a2799877b746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Mon, 9 Jul 2018 18:06:08 +0200 Subject: [PATCH] Network/ENetPeer: Fix reliable sequence number wrap error --- ChangeLog.md | 3 ++- src/Nazara/Network/ENetPeer.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 6ec9c8c54..39d2b3431 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -124,7 +124,8 @@ Nazara Engine: - Added StackVector class - ⚠️ Removed Vector[2|3]::Distancef method and made Distance method templated - Added Vector2::Distance static method -- ⚠️ Fixed compilation error on MSVC with flag /permissive- on CullingList class +- ⚠️ Fixed compilation errors on MSVC with flag /permissive- on CullingList class +- Fixed bug in ENet implementation causing legit reliable packets to be dropped on sequence number overflow Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Network/ENetPeer.cpp b/src/Nazara/Network/ENetPeer.cpp index 38189361b..a26423bb4 100644 --- a/src/Nazara/Network/ENetPeer.cpp +++ b/src/Nazara/Network/ENetPeer.cpp @@ -347,7 +347,7 @@ namespace Nz { IncomingCommmand& incomingCommand = *currentCommand; - if (incomingCommand.fragmentsRemaining > 0 || incomingCommand.reliableSequenceNumber != (channel.incomingReliableSequenceNumber + 1)) + if (incomingCommand.fragmentsRemaining > 0 || incomingCommand.reliableSequenceNumber != Nz::UInt16(channel.incomingReliableSequenceNumber + 1)) break; channel.incomingReliableSequenceNumber = incomingCommand.reliableSequenceNumber;