diff options
author | Justin Clarke Casey | 2009-02-17 15:55:56 +0000 |
---|---|---|
committer | Justin Clarke Casey | 2009-02-17 15:55:56 +0000 |
commit | 6bcf7cbb2c117134435ccd70cf35c93964533c5e (patch) | |
tree | 8bab59bbe151bf917672bcb26617484adb453f60 | |
parent | * Apply http://opensimulator.org/mantis/view.php?id=3167 (diff) | |
download | opensim-SC_OLD-6bcf7cbb2c117134435ccd70cf35c93964533c5e.zip opensim-SC_OLD-6bcf7cbb2c117134435ccd70cf35c93964533c5e.tar.gz opensim-SC_OLD-6bcf7cbb2c117134435ccd70cf35c93964533c5e.tar.bz2 opensim-SC_OLD-6bcf7cbb2c117134435ccd70cf35c93964533c5e.tar.xz |
* Apply http://opensimulator.org/mantis/view.php?id=3179
* 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
-rw-r--r-- | OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs index b1f4b84..090f1d5 100644 --- a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs | |||
@@ -381,25 +381,25 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm | |||
381 | 381 | ||
382 | if (m_curlisteners < m_maxlisteners) | 382 | if (m_curlisteners < m_maxlisteners) |
383 | { | 383 | { |
384 | int newHandle = GetNewHandle(itemID); | 384 | lock (m_listeners) |
385 | |||
386 | if (newHandle > 0) | ||
387 | { | 385 | { |
388 | ListenerInfo li = new ListenerInfo(newHandle, localID, itemID, hostID, channel, name, id, msg); | 386 | int newHandle = GetNewHandle(itemID); |
389 | 387 | ||
390 | lock (m_listeners) | 388 | if (newHandle > 0) |
391 | { | 389 | { |
392 | List<ListenerInfo> listeners; | 390 | ListenerInfo li = new ListenerInfo(newHandle, localID, itemID, hostID, channel, name, id, msg); |
393 | if (!m_listeners.TryGetValue(channel,out listeners)) | ||
394 | { | ||
395 | listeners = new List<ListenerInfo>(); | ||
396 | m_listeners.Add(channel, listeners); | ||
397 | } | ||
398 | listeners.Add(li); | ||
399 | m_curlisteners++; | ||
400 | } | ||
401 | 391 | ||
402 | return newHandle; | 392 | List<ListenerInfo> listeners; |
393 | if (!m_listeners.TryGetValue(channel,out listeners)) | ||
394 | { | ||
395 | listeners = new List<ListenerInfo>(); | ||
396 | m_listeners.Add(channel, listeners); | ||
397 | } | ||
398 | listeners.Add(li); | ||
399 | m_curlisteners++; | ||
400 | |||
401 | return newHandle; | ||
402 | } | ||
403 | } | 403 | } |
404 | } | 404 | } |
405 | return -1; | 405 | return -1; |