fix: complete retail parity stability pass
All checks were successful
CI / linux-portable (push) Successful in 3m41s
CI / windows-gate (push) Successful in 6m49s
CI / release (push) Successful in 3m22s

This commit is contained in:
Erik 2026-08-28 20:01:39 +02:00
parent d3df4cb20a
commit f7aa8e0eb7
131 changed files with 7765 additions and 1190 deletions

View file

@ -392,6 +392,29 @@ public sealed class OutboundReliableTransportTests
Assert.Equal(5u, wrapQueue.AckWatermark);
}
[Fact]
public void NewerAckOvertakingQueuedNak_SuppressesStaleEncryptedResend()
{
(OutboundFlowQueue queue, _, _, TransportStats stats,
List<byte[]> sent) = CreateQueue();
queue.SendGameMessage(MakeMessage(2), GameMessageGroup.UIQueue);
queue.SendGameMessage(MakeMessage(3), GameMessageGroup.UIQueue);
queue.SendGameMessage(MakeMessage(4), GameMessageGroup.UIQueue);
// The NAK for seq 2 is queued first. Before the frame sweep, a later
// cumulative ACK proves the server has already advanced through 3.
Nak(queue, 2u);
queue.OnAckSequence(3u);
sent.Clear();
queue.TransmitPendingResends();
Assert.Empty(sent);
Assert.Equal(0, stats.ResendsSent);
Assert.Equal(2, queue.CacheDepth); // watermark itself + newer seq 4
Assert.Equal(0, queue.PendingResendCount);
}
// =====================================================================
// Conformance against the N0 ACE-behaviour double
// =====================================================================