* 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.AgentData.AvatarID = avatarID;
p.GroupData = new AvatarGroupsReplyPacket.GroupDataBlock[data.Length]; 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(); GroupMembershipData m = data[i];
p.GroupData[i].GroupPowers = m.GroupPowers;
p.GroupData[i].AcceptNotices = m.AcceptNotices; AvatarGroupsReplyPacket.GroupDataBlock block = new AvatarGroupsReplyPacket.GroupDataBlock();
p.GroupData[i].GroupTitle = Utils.StringToBytes(m.GroupTitle); block.GroupPowers = m.GroupPowers;
p.GroupData[i].GroupID = m.GroupID; block.AcceptNotices = m.AcceptNotices;
p.GroupData[i].GroupName = Utils.StringToBytes(m.GroupName); block.GroupTitle = Util.StringToBytes256(m.GroupTitle.Substring(0, 20));
p.GroupData[i].GroupInsigniaID = m.GroupPicture; block.GroupID = m.GroupID;
i++; 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; p.NewGroupData.ListInProfile = true;
OutPacket(p, ThrottleOutPacketType.Task); 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) public void BroadcastPacket(Packet packet, ThrottleOutPacketType category, bool sendToPausedAgents, bool allowSplitting)
{ {
// CoarseLocationUpdate packets cannot be split in an automated way // CoarseLocationUpdate and AvatarGroupsReply packets cannot be split in an automated way
if (packet.Type == PacketType.CoarseLocationUpdate && allowSplitting) if ((packet.Type == PacketType.CoarseLocationUpdate || packet.Type == PacketType.AvatarGroupsReply) && allowSplitting)
allowSplitting = false; allowSplitting = false;
if (allowSplitting && packet.HasVariableBlocks) if (allowSplitting && packet.HasVariableBlocks)