Skip to content

Commit c1fdbe2

Browse files
committed
Added warning logs for silently dropped messages due to visibility
1 parent 65ad815 commit c1fdbe2

File tree

2 files changed

+35
-6
lines changed

2 files changed

+35
-6
lines changed

MLAPI/MonoBehaviours/Core/NetworkedBehaviour.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -969,6 +969,7 @@ internal void SendClientRPCPerformance(ulong hash, List<uint> clientIds, Stream
969969
{
970970
if (!this.NetworkedObject.observers.Contains(NetworkingManager.Singleton.ConnectedClientsList[i].ClientId))
971971
{
972+
if (LogHelper.CurrentLogLevel <= LogLevel.Developer) LogHelper.LogWarning("Silently suppressed ClientRPC because a target in the bulk list was not an observer");
972973
continue;
973974
}
974975

@@ -1030,9 +1031,16 @@ internal void SendClientRPCPerformance(ulong hash, Stream messageStream, uint cl
10301031

10311032
for (int i = 0; i < NetworkingManager.Singleton.ConnectedClientsList.Count; i++)
10321033
{
1033-
if (NetworkingManager.Singleton.ConnectedClientsList[i].ClientId == clientIdToIgnore || !this.NetworkedObject.observers.Contains(NetworkingManager.Singleton.ConnectedClientsList[i].ClientId))
1034+
if (NetworkingManager.Singleton.ConnectedClientsList[i].ClientId == clientIdToIgnore)
10341035
continue;
1035-
1036+
1037+
if (!this.NetworkedObject.observers.Contains(NetworkingManager.Singleton.ConnectedClientsList[i].ClientId))
1038+
{
1039+
if (LogHelper.CurrentLogLevel <= LogLevel.Developer) LogHelper.LogWarning("Silently suppressed ClientRPC because a connected client was not an observer");
1040+
continue;
1041+
}
1042+
1043+
10361044
if (IsHost && NetworkingManager.Singleton.ConnectedClientsList[i].ClientId == NetworkingManager.Singleton.LocalClientId)
10371045
{
10381046
messageStream.Position = 0;

MLAPI/NetworkingManagerComponents/Core/InternalMessageHandler.Send.cs

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using MLAPI.Data;
2+
using MLAPI.Logging;
23
using MLAPI.Profiling;
34
using MLAPI.Serialization;
45

@@ -10,8 +11,15 @@ internal static void Send(uint clientId, byte messageType, string channelName, B
1011
{
1112
messageStream.PadStream();
1213

13-
if (NetworkingManager.Singleton.IsServer && clientId == NetworkingManager.Singleton.ServerClientId || (targetObject != null && !targetObject.observers.Contains(clientId))) return;
14+
if (NetworkingManager.Singleton.IsServer && clientId == NetworkingManager.Singleton.ServerClientId)
15+
return;
1416

17+
if (targetObject != null && !targetObject.observers.Contains(clientId))
18+
{
19+
if (LogHelper.CurrentLogLevel <= LogLevel.Developer) LogHelper.LogWarning("Silently suppressed send call because it was directed to an object without visibility");
20+
return;
21+
}
22+
1523
using (BitStream stream = MessageManager.WrapMessage(messageType, clientId, messageStream, flags))
1624
{
1725
NetworkProfiler.StartEvent(TickType.Send, (uint)stream.Length, channelName, MLAPIConstants.MESSAGE_NAMES[messageType]);
@@ -45,7 +53,15 @@ internal static void Send(byte messageType, string channelName, BitStream messag
4553
NetworkProfiler.StartEvent(TickType.Send, (uint)stream.Length, channelName, MLAPIConstants.MESSAGE_NAMES[messageType]);
4654
for (int i = 0; i < netManager.ConnectedClientsList.Count; i++)
4755
{
48-
if (NetworkingManager.Singleton.IsServer && netManager.ConnectedClientsList[i].ClientId == NetworkingManager.Singleton.ServerClientId || (targetObject != null && !targetObject.observers.Contains(netManager.ConnectedClientsList[i].ClientId))) continue;
56+
if (NetworkingManager.Singleton.IsServer && netManager.ConnectedClientsList[i].ClientId == NetworkingManager.Singleton.ServerClientId)
57+
continue;
58+
59+
if (targetObject != null && !targetObject.observers.Contains(netManager.ConnectedClientsList[i].ClientId))
60+
{
61+
if (LogHelper.CurrentLogLevel <= LogLevel.Developer) LogHelper.LogWarning("Silently suppressed send(all) call because it was directed to an object without visibility");
62+
continue;
63+
}
64+
4965
byte error;
5066
netManager.NetworkConfig.NetworkTransport.QueueMessageForSending(netManager.ConnectedClientsList[i].ClientId, stream.GetBuffer(), (int)stream.Length, MessageManager.channels[channelName], false, out error);
5167
}
@@ -79,9 +95,14 @@ internal static void Send(byte messageType, string channelName, uint clientIdToI
7995
for (int i = 0; i < netManager.ConnectedClientsList.Count; i++)
8096
{
8197
if (netManager.ConnectedClientsList[i].ClientId == clientIdToIgnore ||
82-
(NetworkingManager.Singleton.IsServer && netManager.ConnectedClientsList[i].ClientId == NetworkingManager.Singleton.ServerClientId) ||
83-
(targetObject != null && !targetObject.observers.Contains(netManager.ConnectedClientsList[i].ClientId)))
98+
(NetworkingManager.Singleton.IsServer && netManager.ConnectedClientsList[i].ClientId == NetworkingManager.Singleton.ServerClientId))
99+
continue;
100+
101+
if (targetObject != null && !targetObject.observers.Contains(netManager.ConnectedClientsList[i].ClientId))
102+
{
103+
if (LogHelper.CurrentLogLevel <= LogLevel.Developer) LogHelper.LogWarning("Silently suppressed send(ignore) call because it was directed to an object without visibility");
84104
continue;
105+
}
85106

86107
byte error;
87108
netManager.NetworkConfig.NetworkTransport.QueueMessageForSending(netManager.ConnectedClientsList[i].ClientId, stream.GetBuffer(), (int)stream.Length, MessageManager.channels[channelName], false, out error);

0 commit comments

Comments
 (0)