UOculusNetDriver::LowLevelSend was modified to take an FInternetAddr pointer instead of an FString (due to the same change in UE4's NetDriver). The code was modified to convert that passed in FInternetAddr pointer into a string, calling FInternetAddrOculus's ToString method, which would just return the user's ID as a string instead of the correct "[id].oculus" connection string required by the SDK.
Either of these changes fixes it:
Change line 295 in NetDriverOculus.cpp (LowLevelSend) from:
FInternetAddrOculus OculusAddr(FURL(nullptr, *Address->ToString(false), ETravelType::TRAVEL_Absolute));
FInternetAddrOculus OculusAddr = *StaticCastSharedPtr(Address);
Change line 186 in IpAddressOculus.h (ToString) from:
return FString::Printf(TEXT("%s.oculus"), *OculusId.ToString());
User provided sample project attached
Result: Doing this in 4.22 works as expected, both Windows and Android platforms can host a session for each other to join. In 4.23 though, players using an Oculus Quest cannot properly join a session hosted on another Quest. When players try to join a session hosted by a Quest, the Join Session node fails. The Join Session node even fires off of the On Success pin as if it has succeeded but it does nothing. However, if you host from a Windows machine using Vive/Rift, players can join normally no matter if they are on a Quest or PC.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-82549 in the post.
|Component||UE - Platform - XR|
|Created||Oct 26, 2019|
|Resolved||Aug 27, 2021|
|Updated||Oct 13, 2021|