Added hang/flood prevention to NetworkingManager
This commit is contained in:
parent
ae0f5233da
commit
5a3d065ab4
@ -16,6 +16,7 @@ namespace MLAPI
|
|||||||
public List<string> RegisteredScenes = new List<string>();
|
public List<string> RegisteredScenes = new List<string>();
|
||||||
public int MessageBufferSize = 65535;
|
public int MessageBufferSize = 65535;
|
||||||
public int ReceiveTickrate = 64;
|
public int ReceiveTickrate = 64;
|
||||||
|
public int MaxReceiveEventsPerTickRate = 500;
|
||||||
public int SendTickrate = 64;
|
public int SendTickrate = 64;
|
||||||
public int EventTickrate = 64;
|
public int EventTickrate = 64;
|
||||||
public int MaxConnections = 100;
|
public int MaxConnections = 100;
|
||||||
|
@ -312,8 +312,10 @@ namespace MLAPI
|
|||||||
if((Time.time - lastReceiveTickTime >= (1f / NetworkConfig.ReceiveTickrate)) || NetworkConfig.ReceiveTickrate <= 0)
|
if((Time.time - lastReceiveTickTime >= (1f / NetworkConfig.ReceiveTickrate)) || NetworkConfig.ReceiveTickrate <= 0)
|
||||||
{
|
{
|
||||||
NetworkEventType eventType;
|
NetworkEventType eventType;
|
||||||
|
int processedEvents = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
processedEvents++;
|
||||||
eventType = NetworkTransport.Receive(out hostId, out clientId, out channelId, messageBuffer, messageBuffer.Length, out receivedSize, out error);
|
eventType = NetworkTransport.Receive(out hostId, out clientId, out channelId, messageBuffer, messageBuffer.Length, out receivedSize, out error);
|
||||||
NetworkError networkError = (NetworkError)error;
|
NetworkError networkError = (NetworkError)error;
|
||||||
if (networkError == NetworkError.Timeout)
|
if (networkError == NetworkError.Timeout)
|
||||||
@ -368,7 +370,8 @@ namespace MLAPI
|
|||||||
OnClientDisconnect(clientId);
|
OnClientDisconnect(clientId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} while (eventType != NetworkEventType.Nothing);
|
// Only do another iteration if: there are no more messages AND (there is no limit to max events or we have processed less than the maximum)
|
||||||
|
} while (eventType != NetworkEventType.Nothing && (NetworkConfig.MaxReceiveEventsPerTickRate <= 0 || processedEvents < NetworkConfig.MaxReceiveEventsPerTickRate));
|
||||||
lastReceiveTickTime = Time.time;
|
lastReceiveTickTime = Time.time;
|
||||||
}
|
}
|
||||||
if (isServer && ((Time.time - lastEventTickTime >= (1f / NetworkConfig.EventTickrate)) || NetworkConfig.EventTickrate <= 0))
|
if (isServer && ((Time.time - lastEventTickTime >= (1f / NetworkConfig.EventTickrate)) || NetworkConfig.EventTickrate <= 0))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user