Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
132 stars 2 forks source link

Cannot connect to a Linux .NET Headress session with a Direct IP #2651

Open sjsanjsrh opened 1 month ago

sjsanjsrh commented 1 month ago

Describe the bug?

A server that worked fine in mono would have switched to .NET. It is not reachable from the direct IP, but is reachable from the outside.

To Reproduce

resrec:///S-U-SinduyHDL:TheVoid

Expected behavior

Headless Environment Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-116-generic x86_64) Microsoft.NETCore.App 8.0.7 [/usr/lib/dotnet/shared/Microsoft.NETCore.App]

Screenshots

No response

Resonite Version Number

Beta 2024.7.22.1319

What Platforms does this occur on?

Windows, Linux

What headset if any do you use?

No response

Log Files

HeadLessServerLogFile ClientLogFile

Additional Context

No response

Reporters

No response

Frooxius commented 1 month ago

In the log, I noticed that the server is hosting on 172.30.1.98 on port 49917, but the client is trying to connect to port 40859 instead.

It seems like that might be the main cause - the port is mismatched.

sjsanjsrh commented 1 month ago

This log is accessed from an invitation from the HeadLess server. Both devices are on the LAN and attempt to reach the resrec address.

sjsanjsrh commented 1 month ago

@Frooxius It's trying to access it by SessionId, but it doesn't seem to know the correct port.

Logs from the Headless side of another test.

NetworkInitStart
LNL Listener for World  (Handle: 2. Focus: Background, State: Initializing, InitState: InitializingNetwork, FailState: None, FailReason: , IsDestroyed: False, IsAuthority: True, SyncTick: 1, StateVersion: 1, Time: 0, TimeSinceLastUpdate: 0.0258754, running on 0.0.0.0, port 55749
LNL Listener for World  (Handle: 2. Focus: Background, State: Initializing, InitState: InitializingNetwork, FailState: None, FailReason: , IsDestroyed: False, IsAuthority: True, SyncTick: 1, StateVersion: 1, Time: 0, TimeSinceLastUpdate: 0.0338168, running on 172.30.1.98, port 42293

This is the client side log

PM 8:01:22.601 LNL Connection Disconnected: 172.30.1.98:38857, reason: ConnectionFailed, socketErrorCode: Success
PM 8:01:22.601 Connection to lnl://172.30.1.98:38857/ closed: Peer Disconnected
PM 8:01:22.601 Connection lnl://172.30.1.98:38857/ was unsuccessful, trying next available option
PM 8:01:22.602 LNL Connection for Address: lnl://172.30.1.98:38857/, World  (Handle: 4. Focus: Background, State: Initializing, InitState: InitializingNetwork, FailState: None, FailReason: , IsDestroyed: False, IsAuthority: False, SyncTick: 1, StateVersion: 1, Time: 0, TimeSinceLastUpdate: 18.24183 on port 58070. LocalBindIP: 172.30.1.102
PM 8:01:22.602 Connecting to: lnl://172.30.1.98:38857/
PM 8:01:22.602 Establishing direct IP connection to lnl://172.30.1.98:38857/. Don't route: True
PM 8:01:22.602 Direct IP connection peer. ID: 0, State: Outgoing, Address: 172.30.1.98

In this test, connecting directly to lnl://172.30.1.98:42293 works fine.

Even if you specify forcePort, the port in the lnl address is read incorrectly.

S-U-SinduyHDL:TheVoid session in HeadLess's Config.json file with "forcePort": 45875, and then spawned a SessionOrb in World Browser with the session of that Headless and connected to it.

PM 8:28:08.627 SessionInfo. Id: S-U-SinduyHDL:TheVoid, Name: <color=#006910>신듸</color>의 24시간<color=red>레</color><color=yellow>소</color><color=green>나</color><color=cyan>이</color><color=purple>트</color>, Host: Sinduy-HDL, CorrespondingWorldId: U-Sinduy:R-335fad4b-1c1d-4095-a452-d29fdebecfb7, URLs: lnl-nat://be2ae106c5a14ea58ed05664ab2306bd/S-U-SinduyHDL:TheVoid, lnl://172.30.1.98:37375, IsExpired: False

image