Accept an incoming connection that has been received on a listen socket.
When a connection attempt is received (perhaps after a few basic handshake
packets have been exchanged to prevent trivial spoofing), a connection interface
object is created in the k_ESteamNetworkingConnectionState_Connecting state
and a SteamNetConnectionStatusChangedCallback_t is posted. At this point, your
application MUST either accept or close the connection. (It may not ignore it.)
Accepting the connection will transition it either into the connected state,
or the finding route state, depending on the connection type.
You should take action within a second or two, because accepting the connection is
what actually sends the reply notifying the client that they are connected. If you
delay taking action, from the client's perspective it is the same as the network
being unresponsive, and the client may timeout the connection attempt. In other
words, the client cannot distinguish between a delay caused by network problems
and a delay caused by the application.
This means that if your application goes for more than a few seconds without
processing callbacks (for example, while loading a map), then there is a chance
that a client may attempt to connect in that interval and fail due to timeout.
If the application does not respond to the connection attempt in a timely manner,
and we stop receiving communication from the client, the connection attempt will
be timed out locally, transitioning the connection to the
k_ESteamNetworkingConnectionState_ProblemDetectedLocally state. The client may also
close the connection before it is accepted, and a transition to the
k_ESteamNetworkingConnectionState_ClosedByPeer is also possible depending the exact
sequence of events.
Returns k_EResultInvalidParam if the handle is invalid.
Returns k_EResultInvalidState if the connection is not in the appropriate state.
(Remember that the connection state could change in between the time that the
notification being posted to the queue and when it is received by the application.)
A note about connection configuration options. If you need to set any configuration
options that are common to all connections accepted through a particular listen
socket, consider setting the options on the listen socket, since such options are
inherited automatically. If you really do need to set options that are connection
specific, it is safe to set them on the connection before accepting the connection.
Accept an incoming connection that has been received on a listen socket.
When a connection attempt is received (perhaps after a few basic handshake packets have been exchanged to prevent trivial spoofing), a connection interface object is created in the k_ESteamNetworkingConnectionState_Connecting state and a SteamNetConnectionStatusChangedCallback_t is posted. At this point, your application MUST either accept or close the connection. (It may not ignore it.) Accepting the connection will transition it either into the connected state, or the finding route state, depending on the connection type.
You should take action within a second or two, because accepting the connection is what actually sends the reply notifying the client that they are connected. If you delay taking action, from the client's perspective it is the same as the network being unresponsive, and the client may timeout the connection attempt. In other words, the client cannot distinguish between a delay caused by network problems and a delay caused by the application.
This means that if your application goes for more than a few seconds without processing callbacks (for example, while loading a map), then there is a chance that a client may attempt to connect in that interval and fail due to timeout.
If the application does not respond to the connection attempt in a timely manner, and we stop receiving communication from the client, the connection attempt will be timed out locally, transitioning the connection to the k_ESteamNetworkingConnectionState_ProblemDetectedLocally state. The client may also close the connection before it is accepted, and a transition to the k_ESteamNetworkingConnectionState_ClosedByPeer is also possible depending the exact sequence of events.
Returns k_EResultInvalidParam if the handle is invalid. Returns k_EResultInvalidState if the connection is not in the appropriate state. (Remember that the connection state could change in between the time that the notification being posted to the queue and when it is received by the application.)
A note about connection configuration options. If you need to set any configuration options that are common to all connections accepted through a particular listen socket, consider setting the options on the listen socket, since such options are inherited automatically. If you really do need to set options that are connection specific, it is safe to set them on the connection before accepting the connection.