From de87e4871b6eb3852e8f7175f637adaf14a74ccf Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 7 Jun 2012 23:35:21 +0100
Subject: Don't send kill object messages to clients when a child agent is
 closed.

---
 OpenSim/Region/Framework/Scenes/Scene.cs | 39 +++++++++++++++++---------------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index ae35cb9..f291022 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -3274,26 +3274,29 @@ namespace OpenSim.Region.Framework.Scenes
                 {
                     m_eventManager.TriggerOnRemovePresence(agentID);
     
-                    if (AttachmentsModule != null && !isChildAgent && avatar.PresenceType != PresenceType.Npc)
+                    if (!isChildAgent)
                     {
-                        IUserManagement uMan = RequestModuleInterface<IUserManagement>(); 
-                        // Don't save attachments for HG visitors, it
-                        // messes up their inventory. When a HG visitor logs
-                        // out on a foreign grid, their attachments will be
-                        // reloaded in the state they were in when they left
-                        // the home grid. This is best anyway as the visited
-                        // grid may use an incompatible script engine.
-                        if (uMan == null || uMan.IsLocalGridUser(avatar.UUID))
-                            AttachmentsModule.SaveChangedAttachments(avatar, false);
-                    }
-    
-                    ForEachClient(
-                        delegate(IClientAPI client)
+                        if (AttachmentsModule != null && avatar.PresenceType != PresenceType.Npc)
                         {
-                            //We can safely ignore null reference exceptions.  It means the avatar is dead and cleaned up anyway
-                            try { client.SendKillObject(avatar.RegionHandle, new List<uint> { avatar.LocalId }); }
-                            catch (NullReferenceException) { }
-                        });
+                            IUserManagement uMan = RequestModuleInterface<IUserManagement>();
+                            // Don't save attachments for HG visitors, it
+                            // messes up their inventory. When a HG visitor logs
+                            // out on a foreign grid, their attachments will be
+                            // reloaded in the state they were in when they left
+                            // the home grid. This is best anyway as the visited
+                            // grid may use an incompatible script engine.
+                            if (uMan == null || uMan.IsLocalGridUser(avatar.UUID))
+                                AttachmentsModule.SaveChangedAttachments(avatar, false);
+                        }
+
+                        ForEachClient(
+                            delegate(IClientAPI client)
+                            {
+                                //We can safely ignore null reference exceptions.  It means the avatar is dead and cleaned up anyway
+                                try { client.SendKillObject(avatar.RegionHandle, new List<uint> { avatar.LocalId }); }
+                                catch (NullReferenceException) { }
+                            });
+                    }
     
                     IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>();
                     if (agentTransactions != null)
-- 
cgit v1.1