The null subsystem includes code for updating certain session state in RegisterPlayers. It updates thing like NumOpenPublicConnections which is how I found the bug.
Reproduction steps
- Setup a multiplayer project with the NULL subsystem.
- Create a session with any name but “Game”.
- Find the session from another game instance.
- Notice that the session that comes back will have
NumOpenPublicConnections == SessionSettings.NumPublicConnections
Reason for the behaviour
The calling code for RegisterPlayers up the hierarchy is APlayerState::RegisterPlayerWithSession. This gets a default PlayerState with GetDefault<APlayerState>(). Apparently, this session name is not set to the actual session this player is trying to join. This does not seem like intended behaviour.
Suggested fix
The SessionName passed to UOnlineEngineInterface::Get()->RegisterPlayer() should be populated from the actual session name that we are trying to join, not the PlayerState default.