diff --git a/src/Prospect.Unreal/Net/PacketHandler.cs b/src/Prospect.Unreal/Net/PacketHandler.cs index 5f380aa..8d656e4 100644 --- a/src/Prospect.Unreal/Net/PacketHandler.cs +++ b/src/Prospect.Unreal/Net/PacketHandler.cs @@ -192,8 +192,14 @@ public class PacketHandler UpdateInitialState(); } - foreach (var component in _handlerComponents) + // Incoming = sens INVERSE d'Outgoing (Outgoing itère en avant). Indispensable + // dès qu'il y a >1 composant actif : la couche ajoutée en dernier à l'émission + // (ex. chiffrement AES, la plus externe) doit être retirée en premier à la + // réception. Sans ça, le stateless tenterait de parser des octets chiffrés. + for (var idx = _handlerComponents.Count - 1; idx >= 0; idx--) { + var component = _handlerComponents[idx]; + if (processPacketReader.GetPosBits() != 0 && !component.CanReadUnaligned()) { RealignPacket(processPacketReader);