19#define SECRET_BYTE_SIZE 64
21#define COOKIE_BYTE_SIZE 20
127 struct FCommonSendToClientParams
151 virtual bool IsValid()
const override {
return true; }
176 void SendInitialPacket(EHandshakeVersion HandshakeVersion);
210 void SendRestartHandshakeRequest(FCommonSendToClientParams CommonParams);
217 void SendVersionUpgradeMessage(FCommonSendToClientParams CommonParams);
230 void BeginHandshakePacket(
FBitWriter&
HandshakePacket, EHandshakePacketType HandshakePacketType, EHandshakeVersion HandshakeVersion,
242 void SendToServer(EHandshakeVersion HandshakeVersion, EHandshakePacketType
PacketType,
FBitWriter& Packet);
251 void SendToClient(FCommonSendToClientParams CommonParams, EHandshakePacketType
PacketType,
FBitWriter& Packet);
273 return (LastChallengeSuccessAddress.
IsValid() && Address.
IsValid()) ? *LastChallengeSuccessAddress == *Address :
false;
305 LastChallengeSuccessAddress =
nullptr;
306 bRestartedHandshake =
false;
307 LastServerSequence = 0;
308 LastClientSequence = 0;
344 struct FParsedHandshakeData
347 EHandshakeVersion RemoteMinVersion = EHandshakeVersion::Latest;
350 EHandshakeVersion RemoteCurVersion = EHandshakeVersion::Latest;
353 uint32 RemoteNetworkVersion = 0;
362 uint8 RemoteSentHandshakePacketCount = 0;
365 bool bRestartHandshake =
false;
381 FParsedHandshakeData();
394 bool ParseHandshakePacketOriginal(
FBitReader& Packet, FParsedHandshakeData&
OutResult)
const;
425#if !UE_BUILD_SHIPPING
431 bool TrackValidationLogs();
451 double LastSecretUpdateTimestamp;
454 double LastInitTimestamp = 0.0;
460 int32 LastServerSequence;
463 int32 LastClientSequence;
466 EHandshakeVersion MinClientHandshakeVersion;
468#if !UE_BUILD_SHIPPING
470 double LastValidationLogPeriodStart = 0.0;
473 uint32 ValidationLogCounter = 0;
477 double LastUpgradeMessagePeriodStart = 0.0;
480 uint32 UpgradeMessageCounter = 0;
483 FHandshakeFailureFunc HandshakeFailureCallback;
489 double LastClientSendTimestamp;
493 double LastChallengeTimestamp;
496 double LastRestartPacketTimestamp;
502 double LastTimestamp;
511 bool bRestartedHandshake;
520 uint32 MagicHeaderUint = 0;
523 uint8 SentHandshakePacketCount = 0;
526 EHandshakeVersion LastRemoteHandshakeVersion;
529 uint32 CachedGlobalNetTravelCount = 0;
532 uint32 CachedClientID = 0;
535 static constexpr uint32 SessionIDSizeBits = 2;
538 static constexpr uint32 ClientIDSizeBits = 3;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
EEngineNetworkRuntimeFeatures
Definition NetworkVersion.h:45
#define COOKIE_BYTE_SIZE
Definition StatelessConnectHandlerComponent.h:21
#define SECRET_COUNT
Definition StatelessConnectHandlerComponent.h:20
Definition Archive.h:1208
Definition PacketHandler.h:728
Definition StatelessConnectHandlerComponent.h:119
virtual bool IsValid() const override
Definition StatelessConnectHandlerComponent.h:151
ENGINE_API StatelessConnectHandlerComponent()
Definition StatelessConnectHandlerComponent.cpp:384
virtual ENGINE_API void Initialize() override
Definition StatelessConnectHandlerComponent.cpp:883
virtual ENGINE_API void CountBytes(FArchive &Ar) const override
Definition StatelessConnectHandlerComponent.cpp:446
virtual ENGINE_API int32 GetReservedPacketBits() const override
Definition StatelessConnectHandlerComponent.cpp:1794
virtual bool CanReadUnaligned() const override
Definition StatelessConnectHandlerComponent.h:330
virtual ENGINE_API void NotifyHandshakeBegin() override
Definition StatelessConnectHandlerComponent.cpp:458
virtual ENGINE_API void IncomingConnectionless(FIncomingPacketRef PacketRef) override
Definition StatelessConnectHandlerComponent.cpp:1281
ENGINE_API void InitFromConnectionless(StatelessConnectHandlerComponent *InConnectionlessHandler)
Definition StatelessConnectHandlerComponent.cpp:930
ENGINE_API void SetHandshakeFailureCallback(FHandshakeFailureFunc &&InHandshakeFailureFunc)
Definition StatelessConnectHandlerComponent.cpp:942
void GetChallengeSequence(int32 &OutServerSequence, int32 &OutClientSequence) const
Definition StatelessConnectHandlerComponent.h:283
void ResetChallengeData()
Definition StatelessConnectHandlerComponent.h:303
bool DoesRestartedHandshakeMatch(StatelessConnectHandlerComponent &NetConnComponent) const
Definition StatelessConnectHandlerComponent.h:295
ENGINE_API void SetDriver(UNetDriver *InDriver)
Definition StatelessConnectHandlerComponent.cpp:830
bool HasPassedChallenge(const TSharedPtr< const FInternetAddr > &Address, bool &bOutRestartedHandshake) const
Definition StatelessConnectHandlerComponent.h:269
Definition SharedPointer.h:692
UE_FORCEINLINE_HINT const bool IsValid() const
Definition SharedPointer.h:1085
Definition FunctionFwd.h:19
Definition NetConnection.h:284
Definition NetDriver.h:799
@ None
Definition ReplicationDataStreamDebug.h:25
Definition NetworkVersion.cpp:28
TUniqueFunction< void(FStatelessHandshakeFailureInfo HandshakeFailureInfo)> FHandshakeFailureFunc
Definition StatelessConnectHandlerComponent.h:109
EHandshakePacketType
Definition StatelessConnectHandlerComponent.h:51
EHandshakeVersion
Definition StatelessConnectHandlerComponent.h:30
EHandshakePacketModifier
Definition StatelessConnectHandlerComponent.h:67
EHandshakeFailureReason
Definition StatelessConnectHandlerComponent.h:79
Definition BitReader.h:25
Definition BitWriter.h:22
Definition PacketHandler.h:230
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
static UE_FORCEINLINE_HINT int32 Memcmp(const void *Buf1, const void *Buf2, SIZE_T Count)
Definition UnrealMemory.h:114
Definition PacketTraits.h:21
Definition StatelessConnectHandlerComponent.h:89
uint32 RemoteNetworkVersion
Definition StatelessConnectHandlerComponent.h:94
EHandshakeFailureReason FailureReason
Definition StatelessConnectHandlerComponent.h:91
FStatelessHandshakeFailureInfo()
Definition StatelessConnectHandlerComponent.cpp:360
EEngineNetworkRuntimeFeatures RemoteNetworkFeatures
Definition StatelessConnectHandlerComponent.h:97