* Disables automatic packet splitting on AvatarGroupsReply packets. This packet is a mess and shouldn't be used at all (in favor of the event queue message)

* Clean up the way we send AvatarGroupsReply packets, including clamping the group name and group title
0.6.8-post-fixes
John Hurliman 2009-10-30 11:12:32 -07:00
parent 8a73dc0f8a
commit 5d5d0e699a
2 changed files with 15 additions and 13 deletions

View File

@ -2793,20 +2793,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
p.AgentData.AvatarID = avatarID;
p.GroupData = new AvatarGroupsReplyPacket.GroupDataBlock[data.Length];
int i = 0;
foreach (GroupMembershipData m in data)
for (int i = 0; i < data.Length; i++)
{
p.GroupData[i] = new AvatarGroupsReplyPacket.GroupDataBlock();
p.GroupData[i].GroupPowers = m.GroupPowers;
p.GroupData[i].AcceptNotices = m.AcceptNotices;
p.GroupData[i].GroupTitle = Utils.StringToBytes(m.GroupTitle);
p.GroupData[i].GroupID = m.GroupID;
p.GroupData[i].GroupName = Utils.StringToBytes(m.GroupName);
p.GroupData[i].GroupInsigniaID = m.GroupPicture;
i++;
GroupMembershipData m = data[i];
AvatarGroupsReplyPacket.GroupDataBlock block = new AvatarGroupsReplyPacket.GroupDataBlock();
block.GroupPowers = m.GroupPowers;
block.AcceptNotices = m.AcceptNotices;
block.GroupTitle = Util.StringToBytes256(m.GroupTitle.Substring(0, 20));
block.GroupID = m.GroupID;
block.GroupName = Util.StringToBytes256(m.GroupName.Substring(0, 35));
block.GroupInsigniaID = m.GroupPicture;
p.GroupData[i] = block;
}
p.NewGroupData = new AvatarGroupsReplyPacket.NewGroupDataBlock();
p.NewGroupData.ListInProfile = true;
OutPacket(p, ThrottleOutPacketType.Task);

View File

@ -247,8 +247,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void BroadcastPacket(Packet packet, ThrottleOutPacketType category, bool sendToPausedAgents, bool allowSplitting)
{
// CoarseLocationUpdate packets cannot be split in an automated way
if (packet.Type == PacketType.CoarseLocationUpdate && allowSplitting)
// CoarseLocationUpdate and AvatarGroupsReply packets cannot be split in an automated way
if ((packet.Type == PacketType.CoarseLocationUpdate || packet.Type == PacketType.AvatarGroupsReply) && allowSplitting)
allowSplitting = false;
if (allowSplitting && packet.HasVariableBlocks)