aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMelanie2010-12-16 20:49:40 +0100
committerMelanie2010-12-16 20:49:40 +0100
commit835e4dbc2cc5bdeea0bddfef2c15092720f5a10a (patch)
treecfbebb0cca2278845c437b781adb542539a64904
parentRemove some spam from FreeSwitchModule (diff)
downloadopensim-SC-835e4dbc2cc5bdeea0bddfef2c15092720f5a10a.zip
opensim-SC-835e4dbc2cc5bdeea0bddfef2c15092720f5a10a.tar.gz
opensim-SC-835e4dbc2cc5bdeea0bddfef2c15092720f5a10a.tar.bz2
opensim-SC-835e4dbc2cc5bdeea0bddfef2c15092720f5a10a.tar.xz
Add locks on m_killRecord without breaking things like justin did
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs36
1 files changed, 21 insertions, 15 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 6a76069..04710f1 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -1529,21 +1529,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1529 kill.Header.Reliable = true; 1529 kill.Header.Reliable = true;
1530 kill.Header.Zerocoded = true; 1530 kill.Header.Zerocoded = true;
1531 1531
1532 if (localIDs.Count == 1) 1532 lock (m_killRecord)
1533 { 1533 {
1534 if (m_scene.GetScenePresence(localIDs[0]) != null) 1534 if (localIDs.Count == 1)
1535 { 1535 {
1536 OutPacket(kill, ThrottleOutPacketType.State); 1536 if (m_scene.GetScenePresence(localIDs[0]) != null)
1537 return; 1537 {
1538 OutPacket(kill, ThrottleOutPacketType.State);
1539 return;
1540 }
1541 m_killRecord.Add(localIDs[0]);
1538 } 1542 }
1539 m_killRecord.Add(localIDs[0]); 1543 else
1540 }
1541 else
1542 {
1543 lock (m_entityUpdates.SyncRoot)
1544 { 1544 {
1545 foreach (uint localID in localIDs) 1545 lock (m_entityUpdates.SyncRoot)
1546 m_killRecord.Add(localID); 1546 {
1547 foreach (uint localID in localIDs)
1548 m_killRecord.Add(localID);
1549 }
1547 } 1550 }
1548 } 1551 }
1549 1552
@@ -3615,10 +3618,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3615 // 3618 //
3616 // This doesn't appear to apply to child prims - a client will happily ignore these updates 3619 // This doesn't appear to apply to child prims - a client will happily ignore these updates
3617 // after the root prim has been deleted. 3620 // after the root prim has been deleted.
3618 if (m_killRecord.Contains(part.LocalId)) 3621 lock (m_killRecord)
3619 continue; 3622 {
3620 if (m_killRecord.Contains(part.ParentGroup.RootPart.LocalId)) 3623 if (m_killRecord.Contains(part.LocalId))
3621 continue; 3624 continue;
3625 if (m_killRecord.Contains(part.ParentGroup.RootPart.LocalId))
3626 continue;
3627 }
3622 3628
3623 if (part.ParentGroup.IsDeleted) 3629 if (part.ParentGroup.IsDeleted)
3624 continue; 3630 continue;