* This slightly extends a lock in WorldCommModule so that it covers the GetNewHandle method which states in it's doc that it assumes locking has happened before the method is 
called
* Thanks DoranZemlja
0.6.3-post-fixes
Justin Clarke Casey 2009-02-17 15:55:56 +00:00
parent 829c84e69f
commit 6bcf7cbb2c
1 changed files with 15 additions and 15 deletions

View File

@ -380,6 +380,8 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
} }
if (m_curlisteners < m_maxlisteners) if (m_curlisteners < m_maxlisteners)
{
lock (m_listeners)
{ {
int newHandle = GetNewHandle(itemID); int newHandle = GetNewHandle(itemID);
@ -387,8 +389,6 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
{ {
ListenerInfo li = new ListenerInfo(newHandle, localID, itemID, hostID, channel, name, id, msg); ListenerInfo li = new ListenerInfo(newHandle, localID, itemID, hostID, channel, name, id, msg);
lock (m_listeners)
{
List<ListenerInfo> listeners; List<ListenerInfo> listeners;
if (!m_listeners.TryGetValue(channel,out listeners)) if (!m_listeners.TryGetValue(channel,out listeners))
{ {
@ -397,11 +397,11 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
} }
listeners.Add(li); listeners.Add(li);
m_curlisteners++; m_curlisteners++;
}
return newHandle; return newHandle;
} }
} }
}
return -1; return -1;
} }