mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 10:46:00 +08:00
Lock m_UserCache whilst iterating over it in UserManagementModule.GetUserData() to avoid concurrency exceptions
This commit is contained in:
@@ -246,10 +246,15 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
|
||||
}
|
||||
|
||||
// search the local cache
|
||||
foreach (UserData data in m_UserCache.Values)
|
||||
if (users.Find(delegate(UserData d) { return d.Id == data.Id; }) == null &&
|
||||
(data.FirstName.ToLower().StartsWith(query.ToLower()) || data.LastName.ToLower().StartsWith(query.ToLower())))
|
||||
users.Add(data);
|
||||
lock (m_UserCache)
|
||||
{
|
||||
foreach (UserData data in m_UserCache.Values)
|
||||
{
|
||||
if (users.Find(delegate(UserData d) { return d.Id == data.Id; }) == null &&
|
||||
(data.FirstName.ToLower().StartsWith(query.ToLower()) || data.LastName.ToLower().StartsWith(query.ToLower())))
|
||||
users.Add(data);
|
||||
}
|
||||
}
|
||||
|
||||
AddAdditionalUsers(query, users);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user