#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3302759 on 2017/02/14 by John.Pollard
Remove invalid replay samples that can occur due to oversampling (sampling at higher rate than physics is being ticked)
Change 3306072 on 2017/02/16 by John.Barrett
Minor NetcodeUnitTest updates/fixes.
Improved assignment for some types, using FVMReflection - added assignment to enum by name.
Change 3322165 on 2017/02/24 by John.Barrett
Fixed issue where Steam would block unit tests. #JIRA UENET-537
Change 3323917 on 2017/02/27 by John.Barrett
Added better unit test log file management. #JIRA UENET-535
Unit test logs are now stored in subfolders in the game log folder, with one main folder for the current UE4 session, and one subfolder for every unit test run during that session.
Logs are purged occasionally, in line with how the main game logs are purged.
Change 3326307 on 2017/02/28 by John.Pollard
Remove unused cvar
Change 3327907 on 2017/03/01 by John.Barrett
Merged some old NetcodeUnitTest debug features:
- Added command for bit-based log dumping of data (for debugging bit-based netcode)
- Added exported function, for allowing access to console commands, in modules which don't import Engine
Change 3332710 on 2017/03/05 by John.Barrett
Updated unit test flags to expect a disconnect when expecting a server crash.
Change 3332715 on 2017/03/05 by John.Barrett
Wrapped all CreateChannelBunch pointers with a nullptr check (used to not be required).
Replaced old/duplicate unit test code (using CreateChannelBunch) for marking 'exploit failure', with the current centralized function calls.
#JIRA UENET-539
Change 3336258 on 2017/03/07 by John.Pollard
Add more info to history overflow logging
Change 3336259 on 2017/03/07 by John.Pollard
Don't pause replication for replay connections
Change 3341288 on 2017/03/10 by John.Barrett
Fixed invalid access to GLog during game shutdown. #JIRA UE-42394
Change 3341736 on 2017/03/10 by John.Pollard
Get reliability packet handler working again (but still disabled by default)
Change 3349298 on 2017/03/16 by John.Barrett
Fixed issues/potential-issues with the timing of global variable destruction, based on Graeme Thornton's fix. #JIRA UE-42394
Change 3349393 on 2017/03/16 by John.Pollard
Reliability handler cleanup
Change 3350029 on 2017/03/16 by John.Barrett
Updated PacketHandler to support an optional handshaking stage for HandlerComponents, where each handshake must execute sequentially starting at the component closest to the socket.
Change 3350030 on 2017/03/16 by John.Barrett
Updated Asymetric Encryption to support updated PacketHandler system, to perform a key handshake that is compatible with other HandlerComponent's, and fixed some serialization security issues by setting proper limits on values.
Change 3350032 on 2017/03/16 by John.Barrett
Minor corrections to variable types and constructor initializer lists, for the rest of the encryption code.
Change 3355536 on 2017/03/20 by John.Barrett
Added new PacketAudit debug feature, which uses inter-process-communication, to audit the integrity of incoming/outgoing packets at various stages of serialization, between a client and server.
This is critically useful for low level netcode development, particularly with the PacketHandler.
See PacketAudit.h for more information.
Change 3355570 on 2017/03/20 by John.Barrett
Added a small number packet auditing checks to key areas of low level netcode.
Change 3355584 on 2017/03/20 by John.Barrett
Updated ReliabilityHandlerComponent, to support packet reliability during the PacketHandler handshaking stage, and fixed ReliabilityHandlerComponent serializing based on a packets byte size, rather than bit size.
Change 3373389 on 2017/03/30 by John.Barrett
Added check for HandlerComponent's that require reliability.
Change 3373390 on 2017/03/30 by John.Barrett
Added TLS-like encryption handler component, which exchanges a secret key using asymmetric encryption (RSA), and implements symmetric encryption using that key (AES).
Based on RSA encryption component, and John Pollard's AES changes.
Enable in *Engine.ini, using:
[PacketHandlerComponents]
Components=RSAKeyAESEncryption
bEnableReliability=true
Change 3394518 on 2017/04/14 by Ryan.Gerleve
Fix memory leak in FRepChangelistState: added destructor that properly destroys the properties in the shadow state buffer.
Change 3432955 on 2017/05/10 by John.Barrett
Randomized the initial packet sequence numbers for UNetConnection's and for reliable packets - using the stateless handshake cookie.
Also added hooks to determine when PacketHandler level handshaking has completed, so that the initial connection packets can be delayed until this stage (required now, in order to exchange the sequence numbers first).
Change 3464528 on 2017/05/29 by John.Barrett
Fixed connection failure during unreliable network conditions, caused by a bad interaction between the stateless handshake and sequence initialization code.
Added a new 'ack' stage to the stateless handshake, to ensure the client/server sequence is properly synchronised.
Expanded the timeout/retry handling for the stateless handshake, so it is more robust, and fixed some bugs in this code.
Change 3464537 on 2017/05/29 by John.Barrett
Fixed an incompatibility between the asymmetric encryption, and the new PacketHandler handshake code.
Change 3464543 on 2017/05/29 by John.Barrett
Updated CryptoPP to 5.6.5.
Change 3467529 on 2017/05/31 by Jon.Nabozny
Add comments to FPacketSimulationSettings vars.
Change 3469584 on 2017/06/01 by Ryan.Gerleve
Log bunch ChSequence on reliable channel open along with other info.
Change 3471329 on 2017/06/02 by John.Barrett
Fixed PacketHandlerLog type not being exported.
Change 3471875 on 2017/06/02 by John.Barrett
Fixed code that was trying to send NetConnection packets from the server to the client, too early - and tidied up related checks.
#JIRA UE-45637
Change 3473030 on 2017/06/04 by John.Barrett
Fixed replay incomaptibility with recent sequence/handshake changes.
Change 3476313 on 2017/06/06 by Ryan.Gerleve
Add initial reliable sequence numbers to the log in UNetConnection::InitSequence.
Change 3478649 on 2017/06/07 by Ryan.Gerleve
Add additional logging for the case where a channel open command is received by a channel that's already opened locally.
Change 3482926 on 2017/06/09 by John.Barrett
First pass at Minimal Client refactor for NetcodeUnitTest - split basic/minimal client code out of ClientUnitTest, into its own class - while preserving existing ClientUnitTest interface.
This will allow multiple minimal clients per unit test, where only one could be used before (necessary for games that require a beacon + game connection).
Added reflection support for weak UObject properties.
Added MCP requirements flag for unit tests.
Process pipe reading tweaks, to avoid UI freezes.
Change 3485179 on 2017/06/12 by Ryan.Gerleve
Add backwards-compatibility macros for random initial packet sequence changes so that game plugins can check them.
Change 3489040 on 2017/06/14 by John.Barrett
Removed OnlineSubsystem dependencies.
[CL 3495525 by Ryan Gerleve in Main branch]
- Split [PacketHandlerComponents].Components ini setting, into an array, instead of one string.
- Give UNetConnection's a PacketHandler by default (for future handshake code).
- Refactored/cleaned-up a lot of PacketHandler code.
[CL 2711763 by John Barrett in Main branch]