@@ -849,7 +849,7 @@ private void HandleRawTransportPoll(NetEventType eventType, ulong clientId, stri
849
849
case NetEventType . Data :
850
850
if ( LogHelper . CurrentLogLevel <= LogLevel . Developer ) LogHelper . LogInfo ( $ "Incoming Data From { clientId } : { payload . Count } bytes") ;
851
851
852
- HandleIncomingData ( clientId , channelName , payload , receiveTime ) ;
852
+ HandleIncomingData ( clientId , channelName , payload , receiveTime , true ) ;
853
853
break ;
854
854
case NetEventType . Disconnect :
855
855
NetworkProfiler . StartEvent ( TickType . Receive , 0 , "NONE" , "TRANSPORT_DISCONNECT" ) ;
@@ -871,7 +871,7 @@ private void HandleRawTransportPoll(NetEventType eventType, ulong clientId, stri
871
871
}
872
872
}
873
873
874
- internal void HandleIncomingData ( ulong clientId , string channelName , ArraySegment < byte > data , float receiveTime )
874
+ internal void HandleIncomingData ( ulong clientId , string channelName , ArraySegment < byte > data , float receiveTime , bool allowBuffer )
875
875
{
876
876
if ( LogHelper . CurrentLogLevel <= LogLevel . Developer ) LogHelper . LogInfo ( "Unwrapping Data Header" ) ;
877
877
@@ -910,6 +910,13 @@ internal void HandleIncomingData(ulong clientId, string channelName, ArraySegmen
910
910
911
911
void bufferCallback ( ulong networkId )
912
912
{
913
+ if ( ! allowBuffer )
914
+ {
915
+ // This is to prevent recursive buffering
916
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Error ) LogHelper . LogError ( "A message of type " + MLAPIConstants . MESSAGE_NAMES [ messageType ] + " was recursivley buffered. It has been dropped." ) ;
917
+ return ;
918
+ }
919
+
913
920
if ( ! NetworkConfig . EnableMessageBuffering )
914
921
{
915
922
throw new InvalidOperationException ( "Cannot buffer with buffering disabled." ) ;
@@ -927,12 +934,10 @@ void bufferCallback(ulong networkId)
927
934
switch ( messageType )
928
935
{
929
936
case MLAPIConstants . MLAPI_CONNECTION_REQUEST :
930
- if ( IsServer )
931
- InternalMessageHandler . HandleConnectionRequest ( clientId , messageStream ) ;
937
+ if ( IsServer ) InternalMessageHandler . HandleConnectionRequest ( clientId , messageStream ) ;
932
938
break ;
933
939
case MLAPIConstants . MLAPI_CONNECTION_APPROVED :
934
- if ( IsClient )
935
- InternalMessageHandler . HandleConnectionApproved ( clientId , messageStream , receiveTime ) ;
940
+ if ( IsClient ) InternalMessageHandler . HandleConnectionApproved ( clientId , messageStream , receiveTime ) ;
936
941
break ;
937
942
case MLAPIConstants . MLAPI_ADD_OBJECT :
938
943
if ( IsClient ) InternalMessageHandler . HandleAddObject ( clientId , messageStream ) ;
0 commit comments