Release 1.10.6.0 - Autumn Update 2025 Hotfix 1
This commit is contained in:
@@ -4384,9 +4384,22 @@ namespace Barotrauma.Networking
|
||||
moustacheIndex: netInfo.MoustacheIndex,
|
||||
faceAttachmentIndex: netInfo.FaceAttachmentIndex);
|
||||
|
||||
sender.CharacterInfo.Head.SkinColor = netInfo.SkinColor;
|
||||
sender.CharacterInfo.Head.HairColor = netInfo.HairColor;
|
||||
sender.CharacterInfo.Head.FacialHairColor = netInfo.FacialHairColor;
|
||||
sender.CharacterInfo.Head.SkinColor = validateColor(netInfo.SkinColor, "skin color", sender.CharacterInfo.SkinColors.Select(kvp => kvp.Color));
|
||||
sender.CharacterInfo.Head.HairColor = validateColor(netInfo.HairColor, "hair color", sender.CharacterInfo.HairColors.Select(kvp => kvp.Color));
|
||||
sender.CharacterInfo.Head.FacialHairColor = validateColor(netInfo.FacialHairColor, "facial hair color", sender.CharacterInfo.FacialHairColors.Select(kvp => kvp.Color));
|
||||
|
||||
Color validateColor(Color newColor, string colorName, IEnumerable<Color> supportedColors)
|
||||
{
|
||||
if (!supportedColors.Contains(newColor))
|
||||
{
|
||||
DebugConsole.AddWarning($"Client {sender.Name} attempted to set their {colorName} to an unsupported value ({newColor}).");
|
||||
return supportedColors.First();
|
||||
}
|
||||
else
|
||||
{
|
||||
return newColor;
|
||||
}
|
||||
}
|
||||
|
||||
if (netInfo.JobVariants.Length > 0)
|
||||
{
|
||||
|
||||
+21
-2
@@ -269,8 +269,27 @@ namespace Barotrauma.Networking
|
||||
return;
|
||||
}
|
||||
|
||||
var packet = INetSerializableStruct.Read<PeerPacketMessage>(inc);
|
||||
callbacks.OnMessageReceived.Invoke(conn, packet.GetReadMessage(packetHeader.IsCompressed(), conn));
|
||||
try
|
||||
{
|
||||
var packet = INetSerializableStruct.Read<PeerPacketMessage>(inc);
|
||||
callbacks.OnMessageReceived.Invoke(conn, packet.GetReadMessage(packetHeader.IsCompressed(), conn));
|
||||
}
|
||||
|
||||
catch (NetStructReadException)
|
||||
{
|
||||
//kick the client if we fail to parse their message
|
||||
if (conn != OwnerConnection)
|
||||
{
|
||||
if (connectedClients.Find(c => c.Connection == conn) is { } connectedClient)
|
||||
{
|
||||
Disconnect(connectedClient.Connection, PeerDisconnectPacket.WithReason(DisconnectReason.MalformedData));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LidgrenConnection? FindConnection(NetConnection ligdrenConn)
|
||||
|
||||
+26
-5
@@ -73,11 +73,31 @@ namespace Barotrauma.Networking
|
||||
|
||||
try
|
||||
{
|
||||
foreach (var incBuf in ChildServerRelay.Read())
|
||||
foreach (byte[] incBuf in ChildServerRelay.Read())
|
||||
{
|
||||
IReadMessage inc = new ReadOnlyMessage(incBuf, false, 0, incBuf.Length, OwnerConnection);
|
||||
|
||||
HandleDataMessage(inc);
|
||||
P2PEndpoint? senderEndpoint = null;
|
||||
try
|
||||
{
|
||||
IReadMessage inc = new ReadOnlyMessage(incBuf, false, 0, incBuf.Length, OwnerConnection);
|
||||
HandleDataMessage(inc, out senderEndpoint);
|
||||
}
|
||||
catch (NetStructReadException)
|
||||
{
|
||||
//kick the client if we fail to parse their message
|
||||
if (senderEndpoint != null && senderEndpoint != ownerEndpoint)
|
||||
{
|
||||
if (pendingClients.Find(c => c.Connection.Endpoint == senderEndpoint) is { } pendingClient)
|
||||
{
|
||||
RemovePendingClient(pendingClient, PeerDisconnectPacket.WithReason(DisconnectReason.MalformedData));
|
||||
}
|
||||
if (connectedClients.Find(c => c.Connection.Endpoint == senderEndpoint) is { } connectedClient)
|
||||
{
|
||||
Disconnect(connectedClient.Connection, PeerDisconnectPacket.WithReason(DisconnectReason.MalformedData));
|
||||
}
|
||||
break;
|
||||
}
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,8 +120,9 @@ namespace Barotrauma.Networking
|
||||
}
|
||||
}
|
||||
|
||||
private void HandleDataMessage(IReadMessage inc)
|
||||
private void HandleDataMessage(IReadMessage inc, out P2PEndpoint? senderEndPoint)
|
||||
{
|
||||
senderEndPoint = null;
|
||||
if (!started) { return; }
|
||||
|
||||
var senderInfo = INetSerializableStruct.Read<P2POwnerToServerHeader>(inc);
|
||||
|
||||
Reference in New Issue
Block a user