From 2eaa6d5ace738cf1848f82ce7a0b435928b6846f Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Mon, 9 Jul 2012 21:24:32 +0100
Subject: Do not allow a script to attach a prim if its being sat upon.
This prevents a stack overflow where a get position on the avatar will refer to the attachment which will in turn refer back to the avatar.
This required recording of all sitting avatars on a prim which is done separately from recording the sit target avatar.
Recording HashSet is null if there are no sitting avatars in order to save memory.
---
OpenSim/Tests/Common/Helpers/SceneHelpers.cs | 75 +++++++++++++++++-----
OpenSim/Tests/Common/Helpers/UserAccountHelpers.cs | 9 +++
2 files changed, 67 insertions(+), 17 deletions(-)
(limited to 'OpenSim/Tests/Common/Helpers')
diff --git a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
index d5354cb..769de83 100644
--- a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
+++ b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
@@ -412,26 +412,49 @@ namespace OpenSim.Tests.Common
///
public static AgentCircuitData GenerateAgentData(UUID agentId)
{
- string firstName = "testfirstname";
+ AgentCircuitData acd = GenerateCommonAgentData();
- AgentCircuitData agentData = new AgentCircuitData();
- agentData.AgentID = agentId;
- agentData.firstname = firstName;
- agentData.lastname = "testlastname";
+ acd.AgentID = agentId;
+ acd.firstname = "testfirstname";
+ acd.lastname = "testlastname";
+ acd.ServiceURLs = new Dictionary();
+
+ return acd;
+ }
+
+ ///
+ /// Generate some standard agent connection data.
+ ///
+ ///
+ ///
+ public static AgentCircuitData GenerateAgentData(UserAccount ua)
+ {
+ AgentCircuitData acd = GenerateCommonAgentData();
+
+ acd.AgentID = ua.PrincipalID;
+ acd.firstname = ua.FirstName;
+ acd.lastname = ua.LastName;
+ acd.ServiceURLs = ua.ServiceURLs;
+
+ return acd;
+ }
+
+ private static AgentCircuitData GenerateCommonAgentData()
+ {
+ AgentCircuitData acd = new AgentCircuitData();
// XXX: Sessions must be unique, otherwise one presence can overwrite another in NullPresenceData.
- agentData.SessionID = UUID.Random();
- agentData.SecureSessionID = UUID.Random();
-
- agentData.circuitcode = 123;
- agentData.BaseFolder = UUID.Zero;
- agentData.InventoryFolder = UUID.Zero;
- agentData.startpos = Vector3.Zero;
- agentData.CapsPath = "http://wibble.com";
- agentData.ServiceURLs = new Dictionary();
- agentData.Appearance = new AvatarAppearance();
-
- return agentData;
+ acd.SessionID = UUID.Random();
+ acd.SecureSessionID = UUID.Random();
+
+ acd.circuitcode = 123;
+ acd.BaseFolder = UUID.Zero;
+ acd.InventoryFolder = UUID.Zero;
+ acd.startpos = Vector3.Zero;
+ acd.CapsPath = "http://wibble.com";
+ acd.Appearance = new AvatarAppearance();
+
+ return acd;
}
///
@@ -440,6 +463,9 @@ namespace OpenSim.Tests.Common
///
/// This can be used for tests where there is only one region or where there are multiple non-neighbour regions
/// and teleport doesn't take place.
+ ///
+ /// XXX: Use the version of this method that takes the UserAccount structure wherever possible - this will
+ /// make the agent circuit data (e.g. first, lastname) consistent with the user account data.
///
///
///
@@ -452,6 +478,10 @@ namespace OpenSim.Tests.Common
///
/// Add a root agent where the details of the agent connection (apart from the id) are unimportant for the test
///
+ ///
+ /// XXX: Use the version of this method that takes the UserAccount structure wherever possible - this will
+ /// make the agent circuit data (e.g. first, lastname) consistent with the user account data.
+ ///
///
///
///
@@ -464,6 +494,17 @@ namespace OpenSim.Tests.Common
///
/// Add a root agent.
///
+ ///
+ ///
+ ///
+ public static ScenePresence AddScenePresence(Scene scene, UserAccount ua)
+ {
+ return AddScenePresence(scene, GenerateAgentData(ua));
+ }
+
+ ///
+ /// Add a root agent.
+ ///
///
/// This function
///
diff --git a/OpenSim/Tests/Common/Helpers/UserAccountHelpers.cs b/OpenSim/Tests/Common/Helpers/UserAccountHelpers.cs
index 3d3e65c..2fbebc4 100644
--- a/OpenSim/Tests/Common/Helpers/UserAccountHelpers.cs
+++ b/OpenSim/Tests/Common/Helpers/UserAccountHelpers.cs
@@ -138,6 +138,15 @@ namespace OpenSim.Tests.Common
CreateUserWithInventory(scene, ua, pw);
return ua;
}
+
+ public static UserAccount CreateUserWithInventory(
+ Scene scene, string firstName, string lastName, int userId, string pw)
+ {
+ UserAccount ua
+ = new UserAccount(TestHelpers.ParseTail(userId)) { FirstName = firstName, LastName = lastName };
+ CreateUserWithInventory(scene, ua, pw);
+ return ua;
+ }
public static void CreateUserWithInventory(Scene scene, UserAccount ua, string pw)
{
--
cgit v1.1