From 9abe4b2ebf537d32b0b01d404497f290a4f4f806 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Wed, 12 Dec 2007 00:38:57 +0000 Subject: * Start listening for client connections immediately after a region initializes during initial instance startup. (as opposed to waiting for 'all of the regions' to initialize first) * Removed hackish timer based client notification about regions up (no longer needed) * Added a comment about an inventory based login failure that causes me lots of greif testing and debugging. Comment includes *why* it's failing. --- .../Environment/Modules/AvatarFactoryModule.cs | 9 +++++++- OpenSim/Region/Environment/Scenes/Scene.cs | 26 +++++++++++++++------- 2 files changed, 26 insertions(+), 9 deletions(-) (limited to 'OpenSim/Region/Environment') diff --git a/OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs b/OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs index 979df59..86ddfaf 100644 --- a/OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs +++ b/OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs @@ -55,7 +55,14 @@ namespace OpenSim.Region.Environment.Modules byte[] visualParams; GetDefaultAvatarAppearance(out wearables, out visualParams); appearance = new AvatarAppearance(avatarId, wearables, visualParams); - m_avatarsAppearance[avatarId] = appearance; + try + { + m_avatarsAppearance[avatarId] = appearance; + } + catch (System.NullReferenceException) + { + OpenSim.Framework.Console.MainLog.Instance.Error("AVATAR", "Unable to load appearance for uninitialized avatar"); + } return true; } } diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index fef02f0..f2b5643 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -313,17 +313,27 @@ namespace OpenSim.Region.Environment.Scenes } if ((Math.Abs(otherRegion.RegionLocX - RegionInfo.RegionLocX) <= 1) && (Math.Abs(otherRegion.RegionLocY - RegionInfo.RegionLocY) <= 1)) { - lock (m_regionRestartNotifyList) + try { - if (!(m_regionRestartNotifyList.Contains(otherRegion))) - { - m_regionRestartNotifyList.Add(otherRegion); - m_restartWaitTimer.Interval = 50000; - m_restartWaitTimer.AutoReset = false; - m_restartWaitTimer.Elapsed += new ElapsedEventHandler(RestartNotifyWaitElapsed); - m_restartWaitTimer.Start(); + ForEachScenePresence(delegate(ScenePresence agent) + { + // If agent is a root agent. + if (!agent.IsChildAgent) + { + //agent.ControllingClient.new + //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); + InformClientOfNeighbor(agent, otherRegion); + } } + + ); + } + catch (System.NullReferenceException) + { + // This means that we're not booted up completely yet. + // This shouldn't happen too often anymore. + MainLog.Instance.Error("SCENE", "Couldn't inform client of regionup because we got a null reference exception"); } } else -- cgit v1.1