mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 19:10:32 +00:00
fix(MultiplexTransport): Use TryGetValue for Lookups (#3758)
This commit is contained in:
parent
77469f5201
commit
cd358630ff
@ -61,9 +61,10 @@ public ushort Port
|
||||
{
|
||||
// prevent log flood from OnGUI or similar per-frame updates
|
||||
alreadyWarned = true;
|
||||
Debug.LogWarning($"MultiplexTransport: Server cannot set the same listen port for all transports! Set them directly instead.");
|
||||
Console.ForegroundColor = ConsoleColor.Yellow;
|
||||
Console.WriteLine($"[Multiplexer] Server cannot set the same listen port for all transports! Set them directly instead.");
|
||||
Console.ResetColor();
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
// We can't set the same port for all transports because
|
||||
@ -97,11 +98,12 @@ public void RemoveFromLookup(int originalConnectionId, int transportIndex)
|
||||
{
|
||||
// remove from both
|
||||
KeyValuePair<int, int> pair = new KeyValuePair<int, int>(originalConnectionId, transportIndex);
|
||||
int multiplexedId = originalToMultiplexedId[pair];
|
||||
|
||||
if (originalToMultiplexedId.TryGetValue(pair, out int multiplexedId))
|
||||
{
|
||||
originalToMultiplexedId.Remove(pair);
|
||||
multiplexedToOriginalId.Remove(multiplexedId);
|
||||
}
|
||||
}
|
||||
|
||||
public bool OriginalId(int multiplexId, out int originalConnectionId, out int transportIndex)
|
||||
{
|
||||
@ -121,7 +123,10 @@ public bool OriginalId(int multiplexId, out int originalConnectionId, out int tr
|
||||
public int MultiplexId(int originalConnectionId, int transportIndex)
|
||||
{
|
||||
KeyValuePair<int, int> pair = new KeyValuePair<int, int>(originalConnectionId, transportIndex);
|
||||
return originalToMultiplexedId[pair];
|
||||
if (originalToMultiplexedId.TryGetValue(pair, out int multiplexedId))
|
||||
return multiplexedId;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
@ -265,6 +270,19 @@ void AddServerCallbacks()
|
||||
{
|
||||
// invoke Multiplex event with multiplexed connectionId
|
||||
int multiplexedId = MultiplexId(originalConnectionId, transportIndex);
|
||||
if (multiplexedId == 0)
|
||||
{
|
||||
if (Utils.IsHeadless())
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Yellow;
|
||||
Console.WriteLine($"[Multiplexer] Received data for unknown connectionId={originalConnectionId} on transport={transportIndex}");
|
||||
Console.ResetColor();
|
||||
}
|
||||
else
|
||||
Debug.LogWarning($"[Multiplexer] Received data for unknown connectionId={originalConnectionId} on transport={transportIndex}");
|
||||
|
||||
return;
|
||||
}
|
||||
OnServerDataReceived.Invoke(multiplexedId, data, channel);
|
||||
};
|
||||
|
||||
@ -272,6 +290,19 @@ void AddServerCallbacks()
|
||||
{
|
||||
// invoke Multiplex event with multiplexed connectionId
|
||||
int multiplexedId = MultiplexId(originalConnectionId, transportIndex);
|
||||
if (multiplexedId == 0)
|
||||
{
|
||||
if (Utils.IsHeadless())
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.WriteLine($"[Multiplexer] Received error for unknown connectionId={originalConnectionId} on transport={transportIndex}");
|
||||
Console.ResetColor();
|
||||
}
|
||||
else
|
||||
Debug.LogError($"[Multiplexer] Received error for unknown connectionId={originalConnectionId} on transport={transportIndex}");
|
||||
|
||||
return;
|
||||
}
|
||||
OnServerError.Invoke(multiplexedId, error, reason);
|
||||
};
|
||||
|
||||
@ -279,6 +310,19 @@ void AddServerCallbacks()
|
||||
{
|
||||
// invoke Multiplex event with multiplexed connectionId
|
||||
int multiplexedId = MultiplexId(originalConnectionId, transportIndex);
|
||||
if (multiplexedId == 0)
|
||||
{
|
||||
if (Utils.IsHeadless())
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Yellow;
|
||||
Console.WriteLine($"[Multiplexer] Received disconnect for unknown connectionId={originalConnectionId} on transport={transportIndex}");
|
||||
Console.ResetColor();
|
||||
}
|
||||
else
|
||||
Debug.LogWarning($"[Multiplexer] Received disconnect for unknown connectionId={originalConnectionId} on transport={transportIndex}");
|
||||
|
||||
return;
|
||||
}
|
||||
OnServerDisconnected.Invoke(multiplexedId);
|
||||
RemoveFromLookup(originalConnectionId, transportIndex);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user