Skip to content

Commit 5c3088c

Browse files
Generate Connect events from accepted connections (#969)
MLAPI appears to expect Connect events on servers when new clients connect (at least this is what's implemented in SIPTransport). UTP doesn't generate Connect events server-side, so we must generate them ourselves when accepting connections.
1 parent 4cd203c commit 5c3088c

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

com.unity.multiplayer.transport.utp/Runtime/UTPTransport.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,23 @@ private IEnumerator StartRelayServer(SocketTask task)
286286
#endif
287287
}
288288

289+
private bool AcceptConnection()
290+
{
291+
var connection = m_Driver.Accept();
292+
293+
if (connection != default(NetworkConnection))
294+
{
295+
InvokeOnTransportEvent(NetworkEvent.Connect,
296+
ParseClientId(connection),
297+
NetworkChannel.Internal,
298+
default(ArraySegment<byte>),
299+
Time.realtimeSinceStartup);
300+
return true;
301+
}
302+
303+
return false;
304+
}
305+
289306
private bool ProcessEvent()
290307
{
291308
var eventType = m_Driver.PopEvent(out var networkConnection, out var reader);
@@ -344,6 +361,7 @@ private void Update()
344361
if (m_Driver.IsCreated)
345362
{
346363
m_Driver.ScheduleUpdate().Complete();
364+
while(AcceptConnection() && m_Driver.IsCreated);
347365
while(ProcessEvent() && m_Driver.IsCreated);
348366
}
349367

0 commit comments

Comments
 (0)