diff options
author | John Hurliman | 2009-10-30 11:12:32 -0700 |
---|---|---|
committer | John Hurliman | 2009-10-30 11:12:32 -0700 |
commit | 5d5d0e699af34b9300ed2f60c0c59b256be3dd89 (patch) | |
tree | 9648a62ac8bff803277a156bf247265e05bfe752 /OpenSim/Region/ClientStack/LindenUDP | |
parent | * Fix for a potential race condition in ScenePresence.AbsolutePosition (diff) | |
download | opensim-SC-5d5d0e699af34b9300ed2f60c0c59b256be3dd89.zip opensim-SC-5d5d0e699af34b9300ed2f60c0c59b256be3dd89.tar.gz opensim-SC-5d5d0e699af34b9300ed2f60c0c59b256be3dd89.tar.bz2 opensim-SC-5d5d0e699af34b9300ed2f60c0c59b256be3dd89.tar.xz |
* 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
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 26 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 4 |
2 files changed, 16 insertions, 14 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index bd75f0c..f33d2fa 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -2793,20 +2793,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2793 | p.AgentData.AvatarID = avatarID; | 2793 | p.AgentData.AvatarID = avatarID; |
2794 | 2794 | ||
2795 | p.GroupData = new AvatarGroupsReplyPacket.GroupDataBlock[data.Length]; | 2795 | p.GroupData = new AvatarGroupsReplyPacket.GroupDataBlock[data.Length]; |
2796 | int i = 0; | 2796 | |
2797 | foreach (GroupMembershipData m in data) | 2797 | for (int i = 0; i < data.Length; i++) |
2798 | { | 2798 | { |
2799 | p.GroupData[i] = new AvatarGroupsReplyPacket.GroupDataBlock(); | 2799 | GroupMembershipData m = data[i]; |
2800 | p.GroupData[i].GroupPowers = m.GroupPowers; | 2800 | |
2801 | p.GroupData[i].AcceptNotices = m.AcceptNotices; | 2801 | AvatarGroupsReplyPacket.GroupDataBlock block = new AvatarGroupsReplyPacket.GroupDataBlock(); |
2802 | p.GroupData[i].GroupTitle = Utils.StringToBytes(m.GroupTitle); | 2802 | block.GroupPowers = m.GroupPowers; |
2803 | p.GroupData[i].GroupID = m.GroupID; | 2803 | block.AcceptNotices = m.AcceptNotices; |
2804 | p.GroupData[i].GroupName = Utils.StringToBytes(m.GroupName); | 2804 | block.GroupTitle = Util.StringToBytes256(m.GroupTitle.Substring(0, 20)); |
2805 | p.GroupData[i].GroupInsigniaID = m.GroupPicture; | 2805 | block.GroupID = m.GroupID; |
2806 | i++; | 2806 | block.GroupName = Util.StringToBytes256(m.GroupName.Substring(0, 35)); |
2807 | block.GroupInsigniaID = m.GroupPicture; | ||
2808 | |||
2809 | p.GroupData[i] = block; | ||
2807 | } | 2810 | } |
2808 | 2811 | ||
2809 | p.NewGroupData = new AvatarGroupsReplyPacket.NewGroupDataBlock(); | ||
2810 | p.NewGroupData.ListInProfile = true; | 2812 | p.NewGroupData.ListInProfile = true; |
2811 | 2813 | ||
2812 | OutPacket(p, ThrottleOutPacketType.Task); | 2814 | OutPacket(p, ThrottleOutPacketType.Task); |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index cc06a85..6f94921 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | |||
@@ -247,8 +247,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
247 | 247 | ||
248 | public void BroadcastPacket(Packet packet, ThrottleOutPacketType category, bool sendToPausedAgents, bool allowSplitting) | 248 | public void BroadcastPacket(Packet packet, ThrottleOutPacketType category, bool sendToPausedAgents, bool allowSplitting) |
249 | { | 249 | { |
250 | // CoarseLocationUpdate packets cannot be split in an automated way | 250 | // CoarseLocationUpdate and AvatarGroupsReply packets cannot be split in an automated way |
251 | if (packet.Type == PacketType.CoarseLocationUpdate && allowSplitting) | 251 | if ((packet.Type == PacketType.CoarseLocationUpdate || packet.Type == PacketType.AvatarGroupsReply) && allowSplitting) |
252 | allowSplitting = false; | 252 | allowSplitting = false; |
253 | 253 | ||
254 | if (allowSplitting && packet.HasVariableBlocks) | 254 | if (allowSplitting && packet.HasVariableBlocks) |