And even if the update would work, it never updates NumOpenPublicConnections.
=======
In conclusion, you have to call the update settings manually, even though no settings change.
sessionInterface->UpdateSession(sessionName, Session->SessionSettings);
Then put the update of NumOpenPublicConnections into the update of the settings.
int32 LobbyMemberCount = SteamMatchmakingPtr->GetNumLobbyMembers(SessionInfo->SessionId);
int32 MaxLobbyMembers = SteamMatchmakingPtr->GetLobbyMemberLimit(SessionInfo->SessionId);
Session->NumOpenPublicConnections = MaxLobbyMembers - LobbyMemberCount;
And also set the bLobbyJoinable to true by removing bAllowJoinInProgress to keep the session ‘alive’
========
Or just leave the value wrong in steam, and overwrite it locally on every player who looks at it, like Jonwood explained