Beta 2024.7.20.1115

From Resonite Wiki

Beta 2024.7.20.1115 is a Resonite version released on 2024/07/20.

The following notes were sent by Frooxius:

I've finally gotten to the bottom of the cloud issues that we were experiencing for past few days. This build should fix it (at least it fixes underlying cause).
@everyone please update to this build immediately. I will be blocking previous builds from accessing the cloud since they're tripping the issues. I apologize for the ping, but this is important to get things stable as soon as possible.
The gist of things that have been happening is:
- There's a bug in an old System.Net.Websockets implementation in Mono, where messages that contain multi-codepoint UTF8 symbols (e.g. Japanese or Chinese characters) will trip up validation and make the connection explode and disconnect
- This bug in System.Net.Websockets was fixed back in 2018, but the Mono implementation in Unity is older than that. I've backported the fix to an older version, which will work for now
- There has been an increase in session updates with those symbols present, resulting in the connections exploding much more frequently (most of them not lasting even a minute)
- SignalR would reconnect after connection exploded, which is somewhat heavy process. Due to this happening very frequently for pretty much everyone, this would destabilize the cloud
- The connection dropping frequently also means that you stop receiving and sending updates randomly, causing further issues with the info being up to date
I'll keep monitoring the situation, but hopefully this should make things calm down.

Bugfixes:

  • Switch to modified System.Net.Websockets implementation for SignalR
    • This version contains a packported fix for when WebSocket messages end up splitting UTF8 strings in a middle of a surrogate pair, resulting in websocket connection crash
    • See https://github.com/dotnet/runtime/issues/26240 for details

Ensure that user agent includes Resonite version number

    • This will help us with cloud diagnostics and potential filtering in case of issues