Description

In 4.27 the logic in SteamSocket.cpp which is part of the SteamSockets plugin was changed to use Poll Groups instead of a removed API function that checked all children of a listen socket. However, FSteamSocket::Accept does not actually assign the accepted child connections to the poll group so if you use steam sockets to create a listen server the call to ReceiveMessagesOnPollGroup does nothing. This was discovered from licensee reports, but this should reproduce in shootergame if steamsockets are enabled.

One possible fix is to set it up so it only creates a new poll group in Listen(), and then initializing the child sockets to use the same poll group as the original listen socket.

Steps to Reproduce
  1. Enable SteamSockets with p2p relay enabled for ShooterGame by following the documentation directions
  2. Have 2 different PC's logged into steam with different users
  3. Start 2 ShooterGame instances on different PC's
  4. Host from one, and attempt to join from the other
  5. Observe from logs that the client will attempt to join and it will output p2p relay information, but will eventually timeout because the handshake process does not complete

This repro is theoretical and unconfirmed, the issue was found on a licensee project

Have Comments or More Details?

There's no existing public thread on this issue, so head over to AnswerHub just mention UE-132744 in the post.

3
Login to Vote

Fixed
ComponentOnline - OSS - Steam
Affects Versions4.27.15.0
Target Fix4.27.25.0
Fix Commit17968647
Release Commit17969120
CreatedOct 25, 2021
ResolvedNov 29, 2021
UpdatedDec 6, 2021