aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorJohn Hurliman2009-10-30 11:12:32 -0700
committerJohn Hurliman2009-10-30 11:12:32 -0700
commit5d5d0e699af34b9300ed2f60c0c59b256be3dd89 (patch)
tree9648a62ac8bff803277a156bf247265e05bfe752 /OpenSim
parent* Fix for a potential race condition in ScenePresence.AbsolutePosition (diff)
downloadopensim-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')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs26
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs4
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)