Skip to content

Commit 4e39d37

Browse files
committed
Server can no longer send messages to itself
1 parent c560614 commit 4e39d37

File tree

4 files changed

+27
-71
lines changed

4 files changed

+27
-71
lines changed

MLAPI/MonoBehaviours/Core/NetworkedBehaviour.cs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,10 @@ protected void SendToServer(string messageType, string channelName, byte[] data)
126126
}
127127
if (isServer)
128128
{
129-
MessageManager.InvokeMessageHandlers(messageType, data, -1);
130-
}
131-
else
132-
{
133-
NetworkingManager.singleton.Send(NetworkingManager.singleton.serverClientId, messageType, channelName, data);
129+
Debug.LogWarning("MLAPI: Server can not send messages to server.");
130+
return;
134131
}
132+
NetworkingManager.singleton.Send(NetworkingManager.singleton.serverClientId, messageType, channelName, data);
135133
}
136134

137135
protected void SendToServerTarget(string messageType, string channelName, byte[] data)
@@ -143,12 +141,10 @@ protected void SendToServerTarget(string messageType, string channelName, byte[]
143141
}
144142
if (isServer)
145143
{
146-
MessageManager.InvokeTargetedMessageHandler(messageType, data, -1, networkId);
147-
}
148-
else
149-
{
150-
NetworkingManager.singleton.Send(NetworkingManager.singleton.serverClientId, messageType, channelName, data, networkId);
144+
Debug.LogWarning("MLAPI: Server can not send messages to server.");
145+
return;
151146
}
147+
NetworkingManager.singleton.Send(NetworkingManager.singleton.serverClientId, messageType, channelName, data, networkId);
152148
}
153149

154150
protected void SendToLocalClient(string messageType, string channelName, byte[] data)
@@ -181,7 +177,7 @@ protected void SendToLocalClientTarget(string messageType, string channelName, b
181177
NetworkingManager.singleton.Send(ownerClientId, messageType, channelName, data, networkId);
182178
}
183179

184-
protected void SendToNonLocalClients(string messageType, string channelName, byte[] data, bool ignoreHost = false)
180+
protected void SendToNonLocalClients(string messageType, string channelName, byte[] data)
185181
{
186182
if (MessageManager.messageTypes[messageType] < 32)
187183
{
@@ -193,10 +189,10 @@ protected void SendToNonLocalClients(string messageType, string channelName, byt
193189
Debug.LogWarning("MLAPI: Sending messages from client to other clients is not yet supported");
194190
return;
195191
}
196-
NetworkingManager.singleton.Send(messageType, channelName, data, ownerClientId, null, ignoreHost);
192+
NetworkingManager.singleton.Send(messageType, channelName, data, ownerClientId, null);
197193
}
198194

199-
protected void SendToNonLocalClientsTarget(string messageType, string channelName, byte[] data, bool ignoreHost = false)
195+
protected void SendToNonLocalClientsTarget(string messageType, string channelName, byte[] data)
200196
{
201197
if (MessageManager.messageTypes[messageType] < 32)
202198
{
@@ -208,7 +204,7 @@ protected void SendToNonLocalClientsTarget(string messageType, string channelNam
208204
Debug.LogWarning("MLAPI: Sending messages from client to other clients is not yet supported");
209205
return;
210206
}
211-
NetworkingManager.singleton.Send(messageType, channelName, data, ownerClientId, networkId, true);
207+
NetworkingManager.singleton.Send(messageType, channelName, data, ownerClientId, networkId);
212208
}
213209

214210
protected void SendToClient(int clientId, string messageType, string channelName, byte[] data)

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -670,10 +670,7 @@ internal void PassthroughSend(int targetId, int sourceId, ushort messageType, in
670670
if (isHost && targetId == -1)
671671
{
672672
//Host trying to send data to it's own client
673-
if (networkId == null)
674-
MessageManager.InvokeMessageHandlers(MessageManager.reverseMessageTypes[messageType], data, sourceId);
675-
else
676-
MessageManager.InvokeTargetedMessageHandler(MessageManager.reverseMessageTypes[messageType], data, sourceId, networkId.Value);
673+
Debug.LogWarning("MLAPI: Send method got message aimed at server from the server?");
677674
return;
678675
}
679676

@@ -701,13 +698,10 @@ internal void PassthroughSend(int targetId, int sourceId, ushort messageType, in
701698

702699
internal void Send(int clientId, string messageType, string channelName, byte[] data, uint? networkId = null)
703700
{
704-
if(isHost && clientId == -1)
701+
if(clientId == -1 && isHost)
705702
{
706-
//Host trying to send data to it's own client
707-
if (networkId == null)
708-
MessageManager.InvokeMessageHandlers(messageType, data, clientId);
709-
else
710-
MessageManager.InvokeTargetedMessageHandler(messageType, data, clientId, networkId.Value);
703+
//Don't invoke the message on our own machine. Instant stack overflow.
704+
Debug.LogWarning("MLAPI: Cannot send message to own client");
711705
return;
712706
}
713707
else if(clientId == -1)
@@ -775,10 +769,7 @@ internal void Send(int[] clientIds, string messageType, string channelName, byte
775769
int clientId = clientIds[i];
776770
if (isHost && clientId == -1)
777771
{
778-
if (networkId == null)
779-
MessageManager.InvokeMessageHandlers(messageType, data, clientId);
780-
else
781-
MessageManager.InvokeTargetedMessageHandler(messageType, data, clientId, networkId.Value);
772+
//Don't invoke the message on our own machine. Instant stack overflow.
782773
continue;
783774
}
784775
else if (clientId == -1)
@@ -815,12 +806,9 @@ internal void Send(List<int> clientIds, string messageType, string channelName,
815806
for (int i = 0; i < clientIds.Count; i++)
816807
{
817808
int clientId = clientIds[i];
818-
if (isHost && clientId == -1)
809+
if (clientId == -1 && isHost)
819810
{
820-
if (networkId == null)
821-
MessageManager.InvokeMessageHandlers(messageType, data, clientId);
822-
else
823-
MessageManager.InvokeTargetedMessageHandler(messageType, data, clientId, networkId.Value);
811+
//Don't invoke the message on our own machine. Instant stack overflow.
824812
continue;
825813
}
826814
else if (clientId == -1)
@@ -859,10 +847,7 @@ internal void Send(string messageType, string channelName, byte[] data, uint? ne
859847
int clientId = pair.Key;
860848
if(isHost && pair.Key == -1)
861849
{
862-
if (networkId == null)
863-
MessageManager.InvokeMessageHandlers(messageType, data, clientId);
864-
else
865-
MessageManager.InvokeTargetedMessageHandler(messageType, data, clientId, networkId.Value);
850+
//Don't invoke the message on our own machine. Instant stack overflow.
866851
continue;
867852
}
868853
else if (clientId == -1)
@@ -876,7 +861,7 @@ internal void Send(string messageType, string channelName, byte[] data, uint? ne
876861
}
877862
}
878863

879-
internal void Send(string messageType, string channelName, byte[] data, int clientIdToIgnore, uint? networkId = null, bool ignoreHost = false)
864+
internal void Send(string messageType, string channelName, byte[] data, int clientIdToIgnore, uint? networkId = null)
880865
{
881866
//2 bytes for messageType, 2 bytes for buffer length and one byte for target bool
882867
int sizeOfStream = 5;
@@ -902,12 +887,9 @@ internal void Send(string messageType, string channelName, byte[] data, int clie
902887
if (pair.Key == clientIdToIgnore)
903888
continue;
904889
int clientId = pair.Key;
905-
if (isHost && pair.Key == -1 && !ignoreHost)
890+
if (isHost && pair.Key == -1)
906891
{
907-
if (networkId == null)
908-
MessageManager.InvokeMessageHandlers(messageType, data, clientId);
909-
else
910-
MessageManager.InvokeTargetedMessageHandler(messageType, data, clientId, networkId.Value);
892+
//Don't invoke the message on our own machine. Instant stack overflow.
911893
continue;
912894
}
913895
else if (clientId == -1)

MLAPI/MonoBehaviours/Prototyping/NetworkedAnimator.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ private void FixedUpdate()
9696
}
9797
if(isServer)
9898
{
99-
SendToNonLocalClientsTarget("MLAPI_HandleAnimationMessage", "MLAPI_ANIMATION_UPDATE", stream.ToArray(), true);
99+
SendToNonLocalClientsTarget("MLAPI_HandleAnimationMessage", "MLAPI_ANIMATION_UPDATE", stream.ToArray());
100100
}
101101
else
102102
{
@@ -154,7 +154,7 @@ private void CheckSendRate()
154154
}
155155
if (isServer)
156156
{
157-
SendToNonLocalClientsTarget("MLAPI_HandleAnimationParameterMessage", "MLAPI_ANIMATION_UPDATE", stream.ToArray(), true);
157+
SendToNonLocalClientsTarget("MLAPI_HandleAnimationParameterMessage", "MLAPI_ANIMATION_UPDATE", stream.ToArray());
158158
}
159159
else
160160
{
@@ -194,7 +194,7 @@ private void HandleAnimMsg(int clientId, byte[] data)
194194

195195
if(isServer)
196196
{
197-
SendToNonLocalClientsTarget("MLAPI_HandleAnimationMessage", "MLAPI_ANIMATION_UPDATE", data, true);
197+
SendToNonLocalClientsTarget("MLAPI_HandleAnimationMessage", "MLAPI_ANIMATION_UPDATE", data);
198198
}
199199
using(MemoryStream stream = new MemoryStream(data))
200200
{
@@ -215,7 +215,7 @@ private void HandleAnimParamsMsg(int clientId, byte[] data)
215215
{
216216
if (isServer)
217217
{
218-
SendToNonLocalClientsTarget("MLAPI_HandleAnimationParameterMessage", "MLAPI_ANIMATION_UPDATE", data, true);
218+
SendToNonLocalClientsTarget("MLAPI_HandleAnimationParameterMessage", "MLAPI_ANIMATION_UPDATE", data);
219219
}
220220
using (MemoryStream stream = new MemoryStream(data))
221221
{
@@ -230,7 +230,7 @@ private void HandleAnimTriggerMsg(int clientId, byte[] data)
230230
{
231231
if (isServer)
232232
{
233-
SendToNonLocalClientsTarget("MLAPI_HandleAnimationTriggerMessage", "MLAPI_ANIMATION_UPDATE", data, true);
233+
SendToNonLocalClientsTarget("MLAPI_HandleAnimationTriggerMessage", "MLAPI_ANIMATION_UPDATE", data);
234234
}
235235
using (MemoryStream stream = new MemoryStream(data))
236236
{
@@ -329,7 +329,7 @@ public void SetTrigger(int hash)
329329
}
330330
if (isServer)
331331
{
332-
SendToNonLocalClientsTarget("MLAPI_HandleAnimationTriggerMessage", "MLAPI_ANIMATION_UPDATE", stream.ToArray(), true);
332+
SendToNonLocalClientsTarget("MLAPI_HandleAnimationTriggerMessage", "MLAPI_ANIMATION_UPDATE", stream.ToArray());
333333
}
334334
else
335335
{

MLAPI/NetworkingManagerComponents/MessageManager.cs

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,6 @@ private static NetworkingManager netManager
2424
}
2525
}
2626

27-
internal static void InvokeMessageHandlers(string messageType, byte[] data, int clientId)
28-
{
29-
if (!messageTypes.ContainsKey(messageType) || !messageCallbacks.ContainsKey(messageTypes[messageType]))
30-
return;
31-
32-
foreach (KeyValuePair<int, Action<int, byte[]>> pair in messageCallbacks[messageTypes[messageType]])
33-
{
34-
pair.Value(clientId, data);
35-
}
36-
}
37-
38-
internal static void InvokeTargetedMessageHandler(string messageType, byte[] data, int clientId, uint networkId)
39-
{
40-
if (!messageTypes.ContainsKey(messageType) || !messageCallbacks.ContainsKey(messageTypes[messageType]))
41-
return;
42-
List<int> handlerIds = targetedMessages[messageTypes[messageType]][networkId];
43-
for (int i = 0; i < handlerIds.Count; i++)
44-
{
45-
messageCallbacks[messageTypes[messageType]][handlerIds[i]](clientId, data);
46-
}
47-
}
48-
4927
internal static int AddIncomingMessageHandler(string name, Action<int, byte[]> action, uint networkId)
5028
{
5129
if (messageTypes.ContainsKey(name))

0 commit comments

Comments
 (0)