diff --git a/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h b/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h index c7e761b..4b25ba5 100644 --- a/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h +++ b/Source/AdvancedSessions/Classes/AdvancedSessionsLibrary.h @@ -55,6 +55,10 @@ public: //********* Session Information Functions ***********// + // Check if a session result is valid or not + UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|SessionInfo") + static bool IsValidSession(const FBlueprintSessionResult & SessionResult); + // Get the Unique Current Build ID UFUNCTION(BlueprintPure, Category = "Online|AdvancedSessions|SessionInfo") static void GetCurrentUniqueBuildID(int32 &UniqueBuildId); diff --git a/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp b/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp index 607c7ee..abe47fa 100644 --- a/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp +++ b/Source/AdvancedSessions/Private/AdvancedSessionsLibrary.cpp @@ -5,6 +5,11 @@ //General Log DEFINE_LOG_CATEGORY(AdvancedSessionsLog); +bool UAdvancedSessionsLibrary::IsValidSession(const FBlueprintSessionResult & SessionResult) +{ + return SessionResult.OnlineResult.IsValid(); +} + void UAdvancedSessionsLibrary::GetCurrentUniqueBuildID(int32 &UniqueBuildId) { UniqueBuildId = GetBuildUniqueId(); diff --git a/Source/AdvancedSessions/Private/FindFriendSessionCallbackProxy.cpp b/Source/AdvancedSessions/Private/FindFriendSessionCallbackProxy.cpp index 89524a5..ac29f0c 100644 --- a/Source/AdvancedSessions/Private/FindFriendSessionCallbackProxy.cpp +++ b/Source/AdvancedSessions/Private/FindFriendSessionCallbackProxy.cpp @@ -58,9 +58,11 @@ void UFindFriendSessionCallbackProxy::Activate() FindFriendSessionCompleteDelegateHandle = Sessions->AddOnFindFriendSessionCompleteDelegate_Handle(Player->GetControllerId(), OnFindFriendSessionCompleteDelegate); - Sessions->FindFriendSession(Player->GetControllerId(),*cUniqueNetId.GetUniqueNetId()); + Sessions->FindFriendSession(Player->GetControllerId(), *cUniqueNetId.GetUniqueNetId()); + return; } + // Fail immediately FBlueprintSessionResult EmptyResult; OnFailure.Broadcast(EmptyResult); @@ -77,7 +79,13 @@ void UFindFriendSessionCallbackProxy::OnFindFriendSessionCompleted(int32 LocalPl { FBlueprintSessionResult Result; Result.OnlineResult = SessionInfo; - OnSuccess.Broadcast(Result); + if(Result.OnlineResult.IsValid()) + OnSuccess.Broadcast(Result); + else + { + UE_LOG(AdvancedFindFriendSessionLog, Warning, TEXT("FindFriendSession Failed, returned an invalid session.")); + OnFailure.Broadcast(Result); + } } else { diff --git a/Source/AdvancedSessions/Private/UpdateSessionCallbackProxyAdvanced.cpp b/Source/AdvancedSessions/Private/UpdateSessionCallbackProxyAdvanced.cpp index 6ef06c5..b2999d7 100644 --- a/Source/AdvancedSessions/Private/UpdateSessionCallbackProxyAdvanced.cpp +++ b/Source/AdvancedSessions/Private/UpdateSessionCallbackProxyAdvanced.cpp @@ -30,7 +30,6 @@ UUpdateSessionCallbackProxyAdvanced* UUpdateSessionCallbackProxyAdvanced::Update void UUpdateSessionCallbackProxyAdvanced::Activate() { - IOnlineSessionPtr Sessions = Online::GetSessionInterface(); if (Sessions.IsValid())