Oculus Quest cannot Join Session in 4.23

I am developing a VR demo on the Oculus Quest using Unreal 4.22. Everything was going great with multiplayer testing, no connection issues at all. After migrating to 4.23 I am now unable to Join a session hosted by another Quest. When hosting from the server, things look good and I’m able to launch a listen server and see it with the client. The odd thing is that when I find a server and call the Join Session node from the client, it calls it and completes off the On Success pin as if the connection was successful! This is strange to me because it obviously didn’t succeed as nothing at all happens.

Nothing has changed with my Android permissions or anything else related to Android. I tried calling Join Session from the Game Instance as well as from the normal spot I had it in the player menu, but to no avail. Also tried opening the listen server with both the command console and the Open Level node, same results. I also setup a new demo in 4.23 and am experiencing similar issues with either the Join Session doing nothing as before, or connecting to a false version of the listen server without being able to see the Server character as if in a different version of the level. I’m posting on the Oculus forums as well so if I find the answer I’ll post it here.

I should also note that in the UE4 editor, I am able to simulate 2 or more players on the network finding and joining each other with no issues.

I built out my project to the HTC Vive and am able to host a listen server connect and join with two other Quests, but I can no longer host with the Quest since moving the project to 4.23
I setup some tests and I think I can replicate this issue by simply setting up the 4.23 VR template, follow the Oculus setup procedures. Add some multiplayer support so players can find and connect to a session, build to Windows and then to Android. Once I did this I was not able to host on 4.23 but I could host with the Quest if I did the same thing on 4.22. What am I missing?

This is interesting: Since I only develop on the Oculus Quest, I didn’t have the Oculus Software installed on my PC. So now in 4.23, if you don’t have that software installed, you can’t see the OculusVR settings that should be visible in the Plugins section of the Project Settings.

I submitted this issue to Epic and am waiting to hear back from them. The most recent update is that they are forwarding it on to a specialist to look at.

For anyone coming through to see this, I’m still in contact with Epic support every Tuesday to check on the progress of this issue. So far nothing. Several people are asking on my on other forum posts if I have an answer yet, I do not, and I will post the answer here when I find it.

Fix reported by Brock Heinz at Turtle Rock Studios:

https://github.com/Oculus-VR/UnrealEngine/issues/60#issuecomment-544537005

Either of these changes fixes it:

Change line 295 in NetDriverOculus.cpp (LowLevelSend) from:

FInternetAddrOculus OculusAddr(FURL(nullptr, *Address->ToString(false), ETravelType::TRAVEL_Absolute));

to

FInternetAddrOculus OculusAddr = *StaticCastSharedPtr(Address);
or

Change line 186 in IpAddressOculus.h (ToString) from:

return OculusId.ToString();

to

return FString::Printf(TEXT("%s.oculus"), *OculusId.ToString());

This is awesome thanks!
I’ve been trying to get this solution to work for me but noticed something interesting. I haven’t been using the OculusOnlineSubsystem, which is where these changes are located. I’ve been testing multiplayer through the standard OnlineSubsystem. However, this is the exact issue I’m facing so there must be a similar issue with the code elsewhere.
My team is testing 4.23 with the OculusOnlineSubsystem this week so hopefully we can get past this issue.

This case is being recognized by Epic games: Unreal Engine Issues and Bug Tracker (UE-82549)

The issue still persists with the standard OnlineSubsystem so it’s only partially solved.