place some limits on some profile pick fields

This commit is contained in:
UbitUmarov
2025-03-14 00:25:21 +00:00
parent 65eee21661
commit 1855be20fa
5 changed files with 22 additions and 14 deletions

View File

@@ -1427,7 +1427,7 @@ namespace OpenSim.Framework
void GroupMembershipAddReplace(UUID GroupID,ulong GroupPowers);
void SendAvatarNotesReply(UUID targetID, string text);
void SendAvatarPicksReply(UUID targetID, Dictionary<UUID, string> picks);
void SendPickInfoReply(UUID pickID,UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled);
void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3d posGlobal, int sortOrder, bool enabled);
void SendAvatarClassifiedReply(UUID targetID, Dictionary<UUID, string> classifieds);

View File

@@ -4323,7 +4323,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
OutPacket(muteListUpdate, ThrottleOutPacketType.Task);
}
public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled)
public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3d posGlobal, int sortOrder, bool enabled)
{
PickInfoReplyPacket pickInfoReply = (PickInfoReplyPacket)PacketPool.Instance.GetPacket(PacketType.PickInfoReply);
@@ -4335,13 +4335,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
CreatorID = creatorID,
TopPick = topPick,
ParcelID = parcelID,
Name = Utils.StringToBytes(name),
Desc = Utils.StringToBytes(desc),
Name = Utils.StringToBytes(name, 128),
Desc = Utils.StringToBytes(desc, 1022),
SnapshotID = snapshotID,
User = Utils.StringToBytes(user),
OriginalName = Utils.StringToBytes(originalName),
User = Utils.StringToBytes(user, 128), // 64?
OriginalName = Utils.StringToBytes(originalName, 128),
SimName = Utils.StringToBytes(simName),
PosGlobal = new Vector3d(posGlobal),
PosGlobal = posGlobal,
SortOrder = sortOrder,
Enabled = enabled
};
@@ -12094,13 +12094,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private static void HandlePickInfoUpdate(LLClientView c, Packet Pack)
{
if(c.OnPickInfoUpdate is null)
return;
PickInfoUpdatePacket pickInfoUpdate = (PickInfoUpdatePacket)Pack;
string name = Utils.BytesToString(pickInfoUpdate.Data.Name);
if(name.Length > 128)
name = name[..128];
string desc = Utils.BytesToString(pickInfoUpdate.Data.Desc);
if(desc.Length > 1022)
desc = desc[..1022];
c.OnPickInfoUpdate?.Invoke(c,
pickInfoUpdate.Data.PickID,
pickInfoUpdate.Data.CreatorID,
pickInfoUpdate.Data.TopPick,
Utils.BytesToString(pickInfoUpdate.Data.Name),
Utils.BytesToString(pickInfoUpdate.Data.Desc),
name,
desc,
pickInfoUpdate.Data.SnapshotID,
pickInfoUpdate.Data.SortOrder,
pickInfoUpdate.Data.Enabled);

View File

@@ -964,7 +964,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
if(uce.picks is not null && uce.picks.ContainsKey(pick.PickId))
{
pick = uce.picks[pick.PickId];
if(Vector3.TryParse(pick.GlobalPos, out Vector3 gPos))
if(Vector3d.TryParse(pick.GlobalPos, out Vector3d gPos))
remoteClient.SendPickInfoReply(pick.PickId,pick.CreatorId,pick.TopPick,pick.ParcelId,pick.Name,
pick.Desc,pick.SnapshotId,pick.ParcelName,pick.OriginalName,pick.SimName,
gPos,pick.SortOrder,pick.Enabled);
@@ -988,7 +988,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
if(foreign)
cacheForeignImage(targetID, pick.SnapshotId);
if(!Vector3.TryParse(pick.GlobalPos, out Vector3 globalPos))
if(!Vector3d.TryParse(pick.GlobalPos, out Vector3d globalPos))
return;
if (m_thisGridInfo.IsLocalGrid(pick.Gatekeeper, true) == 0)
@@ -1090,7 +1090,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles
Vector3 avaPos = p.AbsolutePosition;
// Getting the global position for the Avatar
Vector3 posGlobal = new(remoteClient.Scene.RegionInfo.WorldLocX + avaPos.X,
Vector3d posGlobal = new(remoteClient.Scene.RegionInfo.WorldLocX + avaPos.X,
remoteClient.Scene.RegionInfo.WorldLocY + avaPos.Y,
avaPos.Z);

View File

@@ -1665,7 +1665,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
}
public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled)
public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3d posGlobal, int sortOrder, bool enabled)
{
}

View File

@@ -1330,7 +1330,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
{
}
public void SendPickInfoReply(UUID pickID,UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled)
public void SendPickInfoReply(UUID pickID,UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3d posGlobal, int sortOrder, bool enabled)
{
}
#endregion