Navigation
API > API/Runtime > API/Runtime/Engine
PacketHandler component for implementing a stateless (non-memory-consuming) connection handshake
Partially based on the Datagram Transport Layer Security protocol.
| Name | StatelessConnectHandlerComponent |
| Type | class |
| Header File | /Engine/Source/Runtime/Engine/Public/PacketHandlers/StatelessConnectHandlerComponent.h |
| Include Path | #include "PacketHandlers/StatelessConnectHandlerComponent.h" |
Syntax
class StatelessConnectHandlerComponent : public HandlerComponent
Inheritance Hierarchy
- HandlerComponent → StatelessConnectHandlerComponent
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
StatelessConnectHandlerComponent() |
Base constructor | PacketHandlers/StatelessConnectHandlerComponent.h |
Structs
| Name | Remarks |
|---|---|
| FCommonSendToClientParams | Common parameters for all 'Send*' functions which send packets to clients |
| FParsedHandshakeData | Handshake data parsed from a packet |
Typedefs
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| EHandshakePacketModifier | UE::Net::EHandshakePacketModifier | PacketHandlers/StatelessConnectHandlerComponent.h | |
| EHandshakePacketType | UE::Net::EHandshakePacketType | PacketHandlers/StatelessConnectHandlerComponent.h | |
| EHandshakeVersion | UE::Net::EHandshakeVersion | PacketHandlers/StatelessConnectHandlerComponent.h | |
| FHandshakeFailureFunc | UE::Net::FHandshakeFailureFunc | PacketHandlers/StatelessConnectHandlerComponent.h |
Constants
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| ClientIDSizeBits | uint32 | The size of the connection id in packets (WARNING: Adjusting this is a net compatibility break) | PacketHandlers/StatelessConnectHandlerComponent.h |
| SessionIDSizeBits | uint32 | The size of the session id in packets (WARNING: Adjusting this is a net compatibility break) | PacketHandlers/StatelessConnectHandlerComponent.h |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| ActiveSecret | uint8 | Which of the two secret values above is active (values are changed frequently, to limit replay attacks) | PacketHandlers/StatelessConnectHandlerComponent.h | |
| AuthorisedCookie | uint8 | The cookie which completed the connection handshake. | PacketHandlers/StatelessConnectHandlerComponent.h | |
| bRestartedHandshake | bool | Both Serverside and Clientside variables Client: Whether or not we are in the middle of a restarted handshake. | PacketHandlers/StatelessConnectHandlerComponent.h | |
| CachedClientID | uint32 | Cached version of the clientside per-NetDriverDefinition 'ClientID' value, for writing client connection id's | PacketHandlers/StatelessConnectHandlerComponent.h | |
| CachedGlobalNetTravelCount | uint32 | Cached version of the serverside UEngine.GlobalNetTravelCount value, for writing session id's | PacketHandlers/StatelessConnectHandlerComponent.h | |
| Driver | UNetDriver * | The net driver associated with this handler - for performing connectionless sends | PacketHandlers/StatelessConnectHandlerComponent.h | |
| HandshakeFailureCallback | FHandshakeFailureFunc | Callback for processing handshake failures | PacketHandlers/StatelessConnectHandlerComponent.h | |
| HandshakeSecret | TArray< uint8 > | Serverside variables The serverside-only 'secret' value, used to help with generating cookies. | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastChallengeSuccessAddress | TSharedPtr< const FInternetAddr > | The last address to successfully complete the handshake challenge | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastChallengeTimestamp | double | The local (client) time at which the challenge was last updated | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastClientSendTimestamp | double | Clientside variables The last time a handshake packet was sent - used for detecting failed sends. | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastClientSequence | int32 | The initial client sequence value, from the last successful handshake | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastCookie | uint8 | The Cookie value of the last challenge response sent. | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastInitTimestamp | double | The time of the last post-handshake initialization | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastRemoteHandshakeVersion | EHandshakeVersion | The last remote handshake version sent by the client/server | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastRestartPacketTimestamp | double | The local (client) time at which the last restart handshake request was received | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastSecretId | uint8 | The SecretId value of the last challenge response sent | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastSecretUpdateTimestamp | double | The time of the last secret value update | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastServerSequence | int32 | The initial server sequence value, from the last successful handshake | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastTimestamp | double | The Timestamp value of the last challenge response sent | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastUpgradeMessagePeriodStart | double | The last time an 'upgrade message' send period began | PacketHandlers/StatelessConnectHandlerComponent.h | |
| LastValidationLogPeriodStart | double | The last time an 'invalid SessionId/ClientId/MagicHeader' log period began | PacketHandlers/StatelessConnectHandlerComponent.h | |
| MagicHeader | TBitArray | The magic header which is prepended to all packets | PacketHandlers/StatelessConnectHandlerComponent.h | |
| MagicHeaderUint | uint32 | Integer representation of the magic header, for direct comparison | PacketHandlers/StatelessConnectHandlerComponent.h | |
| MinClientHandshakeVersion | EHandshakeVersion | The minimum supported client version, for all connections - for setting minimum bounds for the restart handshake (not aware of version) | PacketHandlers/StatelessConnectHandlerComponent.h | |
| OldPacket | FBitWriter | Cache memory of previously used packets to avoid memory allocations | PacketHandlers/StatelessConnectHandlerComponent.h | |
| SentHandshakePacketCount | uint8 | The number of sent handshake packets, added to packets to aid packet dump debugging (may roll over) | PacketHandlers/StatelessConnectHandlerComponent.h | |
| UpgradeMessageCounter | uint32 | The number of upgrade messages sent in the current send period (for rate limiting) | PacketHandlers/StatelessConnectHandlerComponent.h | |
| ValidationLogCounter | uint32 | The number of 'invalid SessionId/ClientId/MagicHeader' logs in the current log period (for logspam limiting) | PacketHandlers/StatelessConnectHandlerComponent.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
bool DoesRestartedHandshakeMatch
(
StatelessConnectHandlerComponent& NetConnComponent |
When a restarted handshake is completed, this is used to match it up with the existing NetConnection | PacketHandlers/StatelessConnectHandlerComponent.h | |
void GetChallengeSequence
(
int32& OutServerSequence, |
Used for retrieving the initial packet sequence values from the handshake data, after a successful challenge | PacketHandlers/StatelessConnectHandlerComponent.h | |
bool HasPassedChallenge
(
const TSharedPtr< const FInternetAddr >& Address, |
Whether or not the specified connection address, has just passed the connection handshake challenge. | PacketHandlers/StatelessConnectHandlerComponent.h | |
void InitFromConnectionless
(
StatelessConnectHandlerComponent* InConnectionlessHandler |
Initializes a serverside UNetConnection-associated StatelessConnect, from the connectionless StatelessConnect that negotiated the handshake. | PacketHandlers/StatelessConnectHandlerComponent.h | |
void ResetChallengeData() |
Used to reset cached handshake success/fail state, when done processing it | PacketHandlers/StatelessConnectHandlerComponent.h | |
void SetDriver
(
UNetDriver* InDriver |
Sets the net driver this handler is associated with | PacketHandlers/StatelessConnectHandlerComponent.h | |
void SetHandshakeFailureCallback
(
FHandshakeFailureFunc&& InHandshakeFailureFunc |
Set a callback for notifying of handshake failure (clientside only). | PacketHandlers/StatelessConnectHandlerComponent.h |
Overridden from HandlerComponent
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void CountBytes
(
FArchive& Ar |
PacketHandlers/StatelessConnectHandlerComponent.h | ||
virtual bool IsValid() |
PacketHandlers/StatelessConnectHandlerComponent.h | ||
virtual void NotifyHandshakeBegin() |
PacketHandlers/StatelessConnectHandlerComponent.h |
Protected
Overridden from HandlerComponent
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual bool CanReadUnaligned() |
PacketHandlers/StatelessConnectHandlerComponent.h | ||
virtual int32 GetReservedPacketBits() |
PacketHandlers/StatelessConnectHandlerComponent.h | ||
virtual void Incoming
(
FBitReader& Packet |
PacketHandlers/StatelessConnectHandlerComponent.h | ||
virtual void IncomingConnectionless
(
FIncomingPacketRef PacketRef |
PacketHandlers/StatelessConnectHandlerComponent.h | ||
virtual void Initialize() |
PacketHandlers/StatelessConnectHandlerComponent.h | ||
virtual void Outgoing
(
FBitWriter& Packet, |
PacketHandlers/StatelessConnectHandlerComponent.h | ||
virtual void Tick
(
float DeltaTime |
PacketHandlers/StatelessConnectHandlerComponent.h |