diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 97 |
1 files changed, 57 insertions, 40 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 22b11e6..1dfd5b4 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -11096,11 +11096,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11096 | } | 11096 | } |
11097 | return true; | 11097 | return true; |
11098 | } | 11098 | } |
11099 | |||
11100 | UUID lastGroupProfileRequestID = UUID.Zero; | ||
11101 | double lastGroupProfileRequestTS = Util.GetTimeStampMS(); | ||
11102 | |||
11099 | private bool HandleGroupProfileRequest(IClientAPI sender, Packet Pack) | 11103 | private bool HandleGroupProfileRequest(IClientAPI sender, Packet Pack) |
11100 | { | 11104 | { |
11105 | if(m_GroupsModule == null) | ||
11106 | return true; | ||
11107 | |||
11101 | GroupProfileRequestPacket groupProfileRequest = | 11108 | GroupProfileRequestPacket groupProfileRequest = |
11102 | (GroupProfileRequestPacket)Pack; | 11109 | (GroupProfileRequestPacket)Pack; |
11103 | 11110 | ||
11111 | |||
11104 | #region Packet Session and User Check | 11112 | #region Packet Session and User Check |
11105 | if (m_checkPackets) | 11113 | if (m_checkPackets) |
11106 | { | 11114 | { |
@@ -11110,50 +11118,59 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11110 | } | 11118 | } |
11111 | #endregion | 11119 | #endregion |
11112 | 11120 | ||
11113 | if (m_GroupsModule != null) | 11121 | UUID grpID = groupProfileRequest.GroupData.GroupID; |
11114 | { | 11122 | double ts = Util.GetTimeStampMS(); |
11115 | GroupProfileReplyPacket groupProfileReply = (GroupProfileReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupProfileReply); | 11123 | if(grpID == lastGroupProfileRequestID && ts - lastGroupProfileRequestTS < 10000) |
11116 | 11124 | return true; | |
11117 | groupProfileReply.AgentData = new GroupProfileReplyPacket.AgentDataBlock(); | 11125 | |
11118 | groupProfileReply.GroupData = new GroupProfileReplyPacket.GroupDataBlock(); | 11126 | lastGroupProfileRequestID = grpID; |
11119 | groupProfileReply.AgentData.AgentID = AgentId; | 11127 | lastGroupProfileRequestTS = ts; |
11120 | 11128 | ||
11121 | GroupProfileData d = m_GroupsModule.GroupProfileRequest(this, | 11129 | GroupProfileReplyPacket groupProfileReply = (GroupProfileReplyPacket)PacketPool.Instance.GetPacket(PacketType.GroupProfileReply); |
11122 | groupProfileRequest.GroupData.GroupID); | 11130 | |
11123 | 11131 | groupProfileReply.AgentData = new GroupProfileReplyPacket.AgentDataBlock(); | |
11124 | groupProfileReply.GroupData.GroupID = d.GroupID; | 11132 | groupProfileReply.GroupData = new GroupProfileReplyPacket.GroupDataBlock(); |
11125 | groupProfileReply.GroupData.Name = Util.StringToBytes256(d.Name); | 11133 | groupProfileReply.AgentData.AgentID = AgentId; |
11126 | groupProfileReply.GroupData.Charter = Util.StringToBytes1024(d.Charter); | 11134 | |
11127 | groupProfileReply.GroupData.ShowInList = d.ShowInList; | 11135 | GroupProfileData d = m_GroupsModule.GroupProfileRequest(this, |
11128 | groupProfileReply.GroupData.MemberTitle = Util.StringToBytes256(d.MemberTitle); | 11136 | groupProfileRequest.GroupData.GroupID); |
11129 | groupProfileReply.GroupData.PowersMask = d.PowersMask; | 11137 | |
11130 | groupProfileReply.GroupData.InsigniaID = d.InsigniaID; | 11138 | groupProfileReply.GroupData.GroupID = d.GroupID; |
11131 | groupProfileReply.GroupData.FounderID = d.FounderID; | 11139 | groupProfileReply.GroupData.Name = Util.StringToBytes256(d.Name); |
11132 | groupProfileReply.GroupData.MembershipFee = d.MembershipFee; | 11140 | groupProfileReply.GroupData.Charter = Util.StringToBytes1024(d.Charter); |
11133 | groupProfileReply.GroupData.OpenEnrollment = d.OpenEnrollment; | 11141 | groupProfileReply.GroupData.ShowInList = d.ShowInList; |
11134 | groupProfileReply.GroupData.Money = d.Money; | 11142 | groupProfileReply.GroupData.MemberTitle = Util.StringToBytes256(d.MemberTitle); |
11135 | groupProfileReply.GroupData.GroupMembershipCount = d.GroupMembershipCount; | 11143 | groupProfileReply.GroupData.PowersMask = d.PowersMask; |
11136 | groupProfileReply.GroupData.GroupRolesCount = d.GroupRolesCount; | 11144 | groupProfileReply.GroupData.InsigniaID = d.InsigniaID; |
11137 | groupProfileReply.GroupData.AllowPublish = d.AllowPublish; | 11145 | groupProfileReply.GroupData.FounderID = d.FounderID; |
11138 | groupProfileReply.GroupData.MaturePublish = d.MaturePublish; | 11146 | groupProfileReply.GroupData.MembershipFee = d.MembershipFee; |
11139 | groupProfileReply.GroupData.OwnerRole = d.OwnerRole; | 11147 | groupProfileReply.GroupData.OpenEnrollment = d.OpenEnrollment; |
11140 | 11148 | groupProfileReply.GroupData.Money = d.Money; | |
11141 | Scene scene = (Scene)m_scene; | 11149 | groupProfileReply.GroupData.GroupMembershipCount = d.GroupMembershipCount; |
11142 | if (scene.Permissions.IsGod(sender.AgentId) && (!sender.IsGroupMember(groupProfileRequest.GroupData.GroupID))) | 11150 | groupProfileReply.GroupData.GroupRolesCount = d.GroupRolesCount; |
11143 | { | 11151 | groupProfileReply.GroupData.AllowPublish = d.AllowPublish; |
11144 | ScenePresence p; | 11152 | groupProfileReply.GroupData.MaturePublish = d.MaturePublish; |
11145 | if (scene.TryGetScenePresence(sender.AgentId, out p)) | 11153 | groupProfileReply.GroupData.OwnerRole = d.OwnerRole; |
11154 | |||
11155 | Scene scene = (Scene)m_scene; | ||
11156 | if (scene.Permissions.IsGod(sender.AgentId) && (!sender.IsGroupMember(groupProfileRequest.GroupData.GroupID))) | ||
11157 | { | ||
11158 | ScenePresence p; | ||
11159 | if (scene.TryGetScenePresence(sender.AgentId, out p)) | ||
11160 | { | ||
11161 | if (p.GodLevel >= 200) | ||
11146 | { | 11162 | { |
11147 | if (p.GodLevel >= 200) | 11163 | groupProfileReply.GroupData.OpenEnrollment = true; |
11148 | { | 11164 | groupProfileReply.GroupData.MembershipFee = 0; |
11149 | groupProfileReply.GroupData.OpenEnrollment = true; | ||
11150 | groupProfileReply.GroupData.MembershipFee = 0; | ||
11151 | } | ||
11152 | } | 11165 | } |
11153 | } | 11166 | } |
11154 | |||
11155 | OutPacket(groupProfileReply, ThrottleOutPacketType.Task); | ||
11156 | } | 11167 | } |
11168 | |||
11169 | OutPacket(groupProfileReply, ThrottleOutPacketType.Task); | ||
11170 | |||
11171 | if(grpID == lastGroupProfileRequestID) | ||
11172 | lastGroupProfileRequestTS = Util.GetTimeStampMS() - 7000; | ||
11173 | |||
11157 | return true; | 11174 | return true; |
11158 | } | 11175 | } |
11159 | private bool HandleGroupMembersRequest(IClientAPI sender, Packet Pack) | 11176 | private bool HandleGroupMembersRequest(IClientAPI sender, Packet Pack) |