Lock NullFriendsData.m_Data for consistency and against concurrent read/write
parent
fbd61106cb
commit
e2dade05d9
|
@ -29,6 +29,7 @@ using System;
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
using log4net;
|
||||
using OpenMetaverse;
|
||||
using OpenSim.Framework;
|
||||
|
@ -54,6 +55,7 @@ namespace OpenSim.Data.Null
|
|||
/// </remarks>
|
||||
public static void Clear()
|
||||
{
|
||||
lock (m_Data)
|
||||
m_Data.Clear();
|
||||
}
|
||||
|
||||
|
@ -70,6 +72,8 @@ namespace OpenSim.Data.Null
|
|||
/// <param name="values"></param>
|
||||
/// <returns></returns>
|
||||
public FriendsData[] GetFriends(string userID)
|
||||
{
|
||||
lock (m_Data)
|
||||
{
|
||||
List<FriendsData> lst = m_Data.FindAll(fdata =>
|
||||
{
|
||||
|
@ -93,6 +97,7 @@ namespace OpenSim.Data.Null
|
|||
|
||||
return lst.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
return new FriendsData[0];
|
||||
}
|
||||
|
@ -105,6 +110,7 @@ namespace OpenSim.Data.Null
|
|||
// m_log.DebugFormat(
|
||||
// "[NULL FRIENDS DATA]: Storing {0} {1} {2}", data.PrincipalID, data.Friend, data.Data["Flags"]);
|
||||
|
||||
lock (m_Data)
|
||||
m_Data.Add(data);
|
||||
|
||||
return true;
|
||||
|
@ -116,6 +122,8 @@ namespace OpenSim.Data.Null
|
|||
}
|
||||
|
||||
public bool Delete(string userID, string friendID)
|
||||
{
|
||||
lock (m_Data)
|
||||
{
|
||||
List<FriendsData> lst = m_Data.FindAll(delegate(FriendsData fdata) { return fdata.PrincipalID == userID.ToString(); });
|
||||
if (lst != null)
|
||||
|
@ -131,6 +139,7 @@ namespace OpenSim.Data.Null
|
|||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue