aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2013-05-21 17:25:06 +0100
committerJustin Clark-Casey (justincc)2013-05-21 17:25:06 +0100
commit6ae426c96ba0bfdad9e884364f5b6be5b4cd61a9 (patch)
tree9934d8a263fefa98ba40250057206072d650d741
parentfix error in hull point indexing (diff)
downloadopensim-SC_OLD-6ae426c96ba0bfdad9e884364f5b6be5b4cd61a9.zip
opensim-SC_OLD-6ae426c96ba0bfdad9e884364f5b6be5b4cd61a9.tar.gz
opensim-SC_OLD-6ae426c96ba0bfdad9e884364f5b6be5b4cd61a9.tar.bz2
opensim-SC_OLD-6ae426c96ba0bfdad9e884364f5b6be5b4cd61a9.tar.xz
Lock m_UserCache whilst iterating over it in UserManagementModule.GetUserData() to avoid concurrency exceptions
-rw-r--r--OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs13
1 files changed, 9 insertions, 4 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
index 6847e57..d99c8eb 100644
--- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
@@ -246,10 +246,15 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
246 } 246 }
247 247
248 // search the local cache 248 // search the local cache
249 foreach (UserData data in m_UserCache.Values) 249 lock (m_UserCache)
250 if (users.Find(delegate(UserData d) { return d.Id == data.Id; }) == null && 250 {
251 (data.FirstName.ToLower().StartsWith(query.ToLower()) || data.LastName.ToLower().StartsWith(query.ToLower()))) 251 foreach (UserData data in m_UserCache.Values)
252 users.Add(data); 252 {
253 if (users.Find(delegate(UserData d) { return d.Id == data.Id; }) == null &&
254 (data.FirstName.ToLower().StartsWith(query.ToLower()) || data.LastName.ToLower().StartsWith(query.ToLower())))
255 users.Add(data);
256 }
257 }
253 258
254 AddAdditionalUsers(query, users); 259 AddAdditionalUsers(query, users);
255 260