NumOpenPublicConnections never changes

I have a problem with network on the 4.10 engine version.

I have implemented network connection based on the ShooterGame.

I can`t get right information about count of connected users.

The value NumOpenPublicConnections always equals to NumPublicConnections, if someone connects to the game.
The earlier versions of the engine didn’t have such problem. I discovered somethin while I was serfing UE4 sources.
The older versions decrements the NumOpenPublicConnections value in the CreateSession method (ONlineSessionInterfaceNull.cpp file).
But this logich has been changed to

Session->NumOpenPublicConnections = NewSessionSettings.NumPublicConnections;	// always start with full public connections, local player will register later

When my program is trying to register new player by APlayerState::RegisterPlayerWithSession method ( This method is called automatically ), it causes the warning message:
“No game present to join for session”.
I can make network connection inspite of this message, but information about the count of connected players never changes.
It happense because the next call returns nullptr after game start.

bool FOnlineSessionNull::RegisterPlayers(FName SessionName, const TArray< TSharedRef<const FUniqueNetId> >& Players, bool bWasInvited)
{
	bool bSuccess = false;
	FNamedOnlineSession* Session = GetNamedSession(SessionName);  // Return nullptr.
	if (Session)
	...

I can’t get to the next code section where the NumOpenPublicConnections is decremented. The same for the UnregisterPlayers method.
Has anyone run into the same problem? If yes, how to solve it?

Update:

If I use the Online::GetSessionInterface(const FName SubsystemName), I am able to get the onnline session by the network name.

IOnlineSessionPtr Sessions = OnlineSub->GetSessionInterface();
			if (Sessions.IsValid())
			{
				FNamedOnlineSession* onlineSession = Sessions->GetNamedSession(NETWORK_NAME); // the online session is returned here.

But, If I use another overloaded function Online::GetSessionInterface(UWorld* World, const FName SubsystemName), I will get nullptr after the Sessions->GetNamedSession(NETWORK_NAME) calling.

		IOnlineSessionPtr Sessions =  Online::GetSessionInterface(newPlayer->GetWorld(), NAME_None);
		if (Sessions.IsValid())
		{
			FNamedOnlineSession* onlineSession = Sessions->GetNamedSession(NETWORK_NAME); // always nullptr