@@ -849,7 +849,7 @@ private void HandleRawTransportPoll(NetEventType eventType, ulong clientId, stri
849849 case NetEventType . Data :
850850 if ( LogHelper . CurrentLogLevel <= LogLevel . Developer ) LogHelper . LogInfo ( $ "Incoming Data From { clientId } : { payload . Count } bytes") ;
851851
852- HandleIncomingData ( clientId , channelName , payload , receiveTime ) ;
852+ HandleIncomingData ( clientId , channelName , payload , receiveTime , true ) ;
853853 break ;
854854 case NetEventType . Disconnect :
855855 NetworkProfiler . StartEvent ( TickType . Receive , 0 , "NONE" , "TRANSPORT_DISCONNECT" ) ;
@@ -871,7 +871,7 @@ private void HandleRawTransportPoll(NetEventType eventType, ulong clientId, stri
871871 }
872872 }
873873
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 )
875875 {
876876 if ( LogHelper . CurrentLogLevel <= LogLevel . Developer ) LogHelper . LogInfo ( "Unwrapping Data Header" ) ;
877877
@@ -910,6 +910,13 @@ internal void HandleIncomingData(ulong clientId, string channelName, ArraySegmen
910910
911911 void bufferCallback ( ulong networkId )
912912 {
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+
913920 if ( ! NetworkConfig . EnableMessageBuffering )
914921 {
915922 throw new InvalidOperationException ( "Cannot buffer with buffering disabled." ) ;
@@ -927,12 +934,10 @@ void bufferCallback(ulong networkId)
927934 switch ( messageType )
928935 {
929936 case MLAPIConstants . MLAPI_CONNECTION_REQUEST :
930- if ( IsServer )
931- InternalMessageHandler . HandleConnectionRequest ( clientId , messageStream ) ;
937+ if ( IsServer ) InternalMessageHandler . HandleConnectionRequest ( clientId , messageStream ) ;
932938 break ;
933939 case MLAPIConstants . MLAPI_CONNECTION_APPROVED :
934- if ( IsClient )
935- InternalMessageHandler . HandleConnectionApproved ( clientId , messageStream , receiveTime ) ;
940+ if ( IsClient ) InternalMessageHandler . HandleConnectionApproved ( clientId , messageStream , receiveTime ) ;
936941 break ;
937942 case MLAPIConstants . MLAPI_ADD_OBJECT :
938943 if ( IsClient ) InternalMessageHandler . HandleAddObject ( clientId , messageStream ) ;
0 commit comments