* Attempt to resolve mantis 873 by placing caps removal operations in a critical section

0.6.0-stable
Justin Clarke Casey 2008-04-02 16:46:58 +00:00
parent 30ea28c3b1
commit f27f861072
2 changed files with 17 additions and 14 deletions

View File

@ -401,7 +401,7 @@ namespace OpenSim.Region.Capabilities
{ {
try try
{ {
// m_log.DebugFormat("[CAPS]: request: {0}, path: {1}, param: {2}", request, path, param); //m_log.DebugFormat("[CAPS]: request: {0}, path: {1}, param: {2}", request, path, param);
Hashtable hash = (Hashtable) LLSD.LLSDDeserialize(Helpers.StringToField(request)); Hashtable hash = (Hashtable) LLSD.LLSDDeserialize(Helpers.StringToField(request));
LLSDTaskScriptUpdate llsdUpdateRequest = new LLSDTaskScriptUpdate(); LLSDTaskScriptUpdate llsdUpdateRequest = new LLSDTaskScriptUpdate();

View File

@ -1755,20 +1755,23 @@ namespace OpenSim.Region.Environment.Scenes
/// <param name="agentId"></param> /// <param name="agentId"></param>
public void RemoveCapsHandler(LLUUID agentId) public void RemoveCapsHandler(LLUUID agentId)
{ {
if (m_capsHandlers.ContainsKey(agentId)) lock (m_capsHandlers)
{ {
m_log.DebugFormat( if (m_capsHandlers.ContainsKey(agentId))
"[CAPS]: Removing CAPS handler for root agent {0} in {1}", {
agentId, RegionInfo.RegionName); m_log.DebugFormat(
"[CAPS]: Removing CAPS handler for root agent {0} in {1}",
m_capsHandlers[agentId].DeregisterHandlers(); agentId, RegionInfo.RegionName);
m_capsHandlers.Remove(agentId);
} m_capsHandlers[agentId].DeregisterHandlers();
else m_capsHandlers.Remove(agentId);
{ }
m_log.WarnFormat( else
"[CAPS]: Received request to remove CAPS handler for root agent {0} in {1}, but no such CAPS handler found!", {
agentId, RegionInfo.RegionName); m_log.WarnFormat(
"[CAPS]: Received request to remove CAPS handler for root agent {0} in {1}, but no such CAPS handler found!",
agentId, RegionInfo.RegionName);
}
} }
} }