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 OculusId.ToString();
return FString::Printf(TEXT("%s.oculus"), *OculusId.ToString());

Steps to Reproduce

User provided sample project attached

  1. Setup player replication and a method to create, find, and join sessions for LAN play using the Online Subsystem and blueprint nodes.

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.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-82549 in the post.

Login to Vote

Won't Fix
ComponentUE - Platform - XR
Affects Versions4.23
CreatedOct 26, 2019
ResolvedAug 27, 2021
UpdatedOct 13, 2021