aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-07-06 22:33:16 +0100
committerJustin Clark-Casey (justincc)2012-07-06 22:33:16 +0100
commit43a2da9edb9a234ee10735a234d2ad253a33cb7a (patch)
tree346fc03ccdb48f8d7ab5ef41eb52510e3fb54119
parentrefactor: extract method UpdateUserInventoryWithAttachment() from AttachObjec... (diff)
downloadopensim-SC-43a2da9edb9a234ee10735a234d2ad253a33cb7a.zip
opensim-SC-43a2da9edb9a234ee10735a234d2ad253a33cb7a.tar.gz
opensim-SC-43a2da9edb9a234ee10735a234d2ad253a33cb7a.tar.bz2
opensim-SC-43a2da9edb9a234ee10735a234d2ad253a33cb7a.tar.xz
Pull prim crossing/teleport checks up into Scene.IncomingCreateObject() from Scene.AddObject()
Only IncomingCreateObject() needs these checks. General object adding does not need to perform crossing perm checks
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs41
1 files changed, 27 insertions, 14 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 36d39ea..6239d51 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2495,7 +2495,16 @@ namespace OpenSim.Region.Framework.Scenes
2495 } 2495 }
2496 catch (Exception e) 2496 catch (Exception e)
2497 { 2497 {
2498 m_log.WarnFormat("[SCENE]: Problem casting object, exception {0}{1}", e.Message, e.StackTrace); 2498 m_log.WarnFormat("[INTERREGION]: Problem casting object, exception {0}{1}", e.Message, e.StackTrace);
2499 return false;
2500 }
2501
2502 // If the user is banned, we won't let any of their objects
2503 // enter. Period.
2504 //
2505 if (RegionInfo.EstateSettings.IsBanned(newObject.OwnerID))
2506 {
2507 m_log.InfoFormat("[INTERREGION]: Denied prim crossing for banned avatar {0}", newObject.OwnerID);
2499 return false; 2508 return false;
2500 } 2509 }
2501 2510
@@ -2504,14 +2513,28 @@ namespace OpenSim.Region.Framework.Scenes
2504 2513
2505 if (!AddSceneObject(newObject)) 2514 if (!AddSceneObject(newObject))
2506 { 2515 {
2507 m_log.DebugFormat("[SCENE]: Problem adding scene object {0} in {1} ", sog.UUID, RegionInfo.RegionName); 2516 m_log.DebugFormat(
2517 "[INTERREGION]: Problem adding scene object {0} in {1} ", newObject.UUID, RegionInfo.RegionName);
2508 return false; 2518 return false;
2509 } 2519 }
2510 2520
2511 // For attachments, we need to wait until the agent is root
2512 // before we restart the scripts, or else some functions won't work.
2513 if (!newObject.IsAttachment) 2521 if (!newObject.IsAttachment)
2514 { 2522 {
2523 // FIXME: It would be better to never add the scene object at all rather than add it and then delete
2524 // it
2525 if (!Permissions.CanObjectEntry(newObject.UUID, true, newObject.AbsolutePosition))
2526 {
2527 // Deny non attachments based on parcel settings
2528 //
2529 m_log.Info("[INTERREGION]: Denied prim crossing because of parcel settings");
2530
2531 DeleteSceneObject(newObject, false);
2532
2533 return false;
2534 }
2535
2536 // For attachments, we need to wait until the agent is root
2537 // before we restart the scripts, or else some functions won't work.
2515 newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, GetStateSource(newObject)); 2538 newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, GetStateSource(newObject));
2516 newObject.ResumeScripts(); 2539 newObject.ResumeScripts();
2517 } 2540 }
@@ -2531,16 +2554,6 @@ namespace OpenSim.Region.Framework.Scenes
2531 /// <returns>True if the SceneObjectGroup was added, False if it was not</returns> 2554 /// <returns>True if the SceneObjectGroup was added, False if it was not</returns>
2532 public bool AddSceneObject(SceneObjectGroup sceneObject) 2555 public bool AddSceneObject(SceneObjectGroup sceneObject)
2533 { 2556 {
2534 // If the user is banned, we won't let any of their objects
2535 // enter. Period.
2536 //
2537 if (RegionInfo.EstateSettings.IsBanned(sceneObject.OwnerID))
2538 {
2539 m_log.InfoFormat("[INTERREGION]: Denied prim crossing for banned avatar {0}", sceneObject.OwnerID);
2540
2541 return false;
2542 }
2543
2544 sceneObject.SetScene(this); 2557 sceneObject.SetScene(this);
2545 2558
2546 // Force allocation of new LocalId 2559 // Force allocation of new LocalId