aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Environment/Modules/FriendsModule.cs53
1 files changed, 30 insertions, 23 deletions
diff --git a/OpenSim/Region/Environment/Modules/FriendsModule.cs b/OpenSim/Region/Environment/Modules/FriendsModule.cs
index fad297e..a6d44ee 100644
--- a/OpenSim/Region/Environment/Modules/FriendsModule.cs
+++ b/OpenSim/Region/Environment/Modules/FriendsModule.cs
@@ -195,37 +195,44 @@ namespace OpenSim.Region.Environment.Modules
195 updateUsers.Add(fli.Friend); 195 updateUsers.Add(fli.Friend);
196 } 196 }
197 } 197 }
198 for (int i = 0; i < updateUsers.Count; i++) 198 lock (updateUsers)
199 { 199 {
200 List<FriendListItem> flfli = new List<FriendListItem>(); 200 for (int i = 0; i < updateUsers.Count; i++)
201 lock (FriendLists)
202 { 201 {
203 if (FriendLists.ContainsKey(updateUsers[i])) 202 List<FriendListItem> flfli = new List<FriendListItem>();
204 flfli = FriendLists[updateUsers[i]]; 203
205 } 204 lock (FriendLists)
206 for (int j = 0; j < flfli.Count; j++)
207 {
208 if (flfli[i].Friend == AgentId)
209 { 205 {
210 flfli[i].onlinestatus = false; 206 if (FriendLists.ContainsKey(updateUsers[i]))
207 flfli = FriendLists[updateUsers[i]];
211 } 208 }
212 209
213 } 210 for (int j = 0; j < flfli.Count; j++)
211 {
212 if (flfli[i].Friend == AgentId)
213 {
214 flfli[i].onlinestatus = false;
215 }
214 216
215 } 217 }
216 for (int i = 0; i < updateUsers.Count; i++) 218
217 { 219
218 ScenePresence av = GetPresenceFromAgentID(updateUsers[i]); 220 }
219 if (av != null) 221
222 for (int i = 0; i < updateUsers.Count; i++)
220 { 223 {
224 ScenePresence av = GetPresenceFromAgentID(updateUsers[i]);
225 if (av != null)
226 {
221 227
222 OfflineNotificationPacket onp = new OfflineNotificationPacket(); 228 OfflineNotificationPacket onp = new OfflineNotificationPacket();
223 OfflineNotificationPacket.AgentBlockBlock[] onpb = new OfflineNotificationPacket.AgentBlockBlock[1]; 229 OfflineNotificationPacket.AgentBlockBlock[] onpb = new OfflineNotificationPacket.AgentBlockBlock[1];
224 OfflineNotificationPacket.AgentBlockBlock onpbl = new OfflineNotificationPacket.AgentBlockBlock(); 230 OfflineNotificationPacket.AgentBlockBlock onpbl = new OfflineNotificationPacket.AgentBlockBlock();
225 onpbl.AgentID = AgentId; 231 onpbl.AgentID = AgentId;
226 onpb[0] = onpbl; 232 onpb[0] = onpbl;
227 onp.AgentBlock = onpb; 233 onp.AgentBlock = onpb;
228 av.ControllingClient.OutPacket(onp, ThrottleOutPacketType.Task); 234 av.ControllingClient.OutPacket(onp, ThrottleOutPacketType.Task);
235 }
229 } 236 }
230 } 237 }
231 lock (FriendLists) 238 lock (FriendLists)