ChorusHubServerInfo stores its discovered server in a static field (src/LibChorus/ChorusHub/ChorusHubServerInfo.cs):
private static ChorusHubServerInfo _chorusHubServerInfo;
All code paths that call FindServerInformation() — including SyncStartControl.CheckNetworkStatusAndUpdateUI — share this single instance. In test scenarios or when multiple independent sync sessions run in the same process, a stale server discovered by one session leaks into another. The existence of ClearServerInfoForTests() as a public workaround confirms this is a known design issue:
public static void ClearServerInfoForTests()
{
_chorusHubServerInfo = null;
}
Fix: Convert _chorusHubServerInfo to an instance member, or restructure discovery to use a properly scoped pattern that does not share state across unrelated sessions.
Found via DeepWiki.
ChorusHubServerInfostores its discovered server in astaticfield (src/LibChorus/ChorusHub/ChorusHubServerInfo.cs):All code paths that call
FindServerInformation()— includingSyncStartControl.CheckNetworkStatusAndUpdateUI— share this single instance. In test scenarios or when multiple independent sync sessions run in the same process, a stale server discovered by one session leaks into another. The existence ofClearServerInfoForTests()as a public workaround confirms this is a known design issue:Fix: Convert
_chorusHubServerInfoto an instance member, or restructure discovery to use a properly scoped pattern that does not share state across unrelated sessions.Found via DeepWiki.