From 8249d77991352697b4972f7109c014db0ebd5f68 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 18 Feb 2011 23:25:59 +0000
Subject: If GridService.GetNeighbours() could not find the region then log a
 warning rather than causing a null reference on the normal log line

This also extends the TestChildAgentEstablished() test to actually activate the EntityTransferModule, though the test is not yet viable
---
 OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs |  7 +++++--
 OpenSim/Services/GridService/GridService.cs                 | 12 +++++++++++-
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs
index 60bc86c..5e1ff79 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTests.cs
@@ -201,15 +201,18 @@ namespace OpenSim.Region.Framework.Scenes.Tests
         public void TestChildAgentEstablished()
         {
             TestHelper.InMethod();
-            log4net.Config.XmlConfigurator.Configure();
+//            log4net.Config.XmlConfigurator.Configure();
             
             UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001");
             
             TestScene myScene1 = SceneSetupHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000);
             TestScene myScene2 = SceneSetupHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000);            
             
+            IConfigSource configSource = new IniConfigSource();
+            configSource.AddConfig("Modules").Set("EntityTransferModule", "BasicEntityTransferModule");                      
             EntityTransferModule etm = new EntityTransferModule();
-            SceneSetupHelpers.SetupSceneModules(myScene1, etm);            
+            
+            SceneSetupHelpers.SetupSceneModules(myScene1, configSource, etm);            
             
             SceneSetupHelpers.AddRootAgent(myScene1, agent1Id);
             ScenePresence childPresence = myScene2.GetScenePresence(agent1);
diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs
index aeff9b5..985d77b 100644
--- a/OpenSim/Services/GridService/GridService.cs
+++ b/OpenSim/Services/GridService/GridService.cs
@@ -271,6 +271,7 @@ namespace OpenSim.Services.GridService
         {
             List<GridRegion> rinfos = new List<GridRegion>();
             RegionData region = m_Database.Get(regionID, scopeID);
+            
             if (region != null)
             {
                 // Not really? Maybe?
@@ -278,15 +279,24 @@ namespace OpenSim.Services.GridService
                     region.posX + (int)Constants.RegionSize + 1, region.posY + (int)Constants.RegionSize + 1, scopeID);
 
                 foreach (RegionData rdata in rdatas)
+                {
                     if (rdata.RegionID != regionID)
                     {
                         int flags = Convert.ToInt32(rdata.Data["flags"]);
                         if ((flags & (int)Data.RegionFlags.Hyperlink) == 0) // no hyperlinks as neighbours
                             rinfos.Add(RegionData2RegionInfo(rdata));
                     }
+                }
 
+                m_log.DebugFormat("[GRID SERVICE]: region {0} has {1} neighbours", region.RegionName, rinfos.Count);
             }
-            m_log.DebugFormat("[GRID SERVICE]: region {0} has {1} neighbours", region.RegionName, rinfos.Count);
+            else
+            {
+                m_log.WarnFormat(
+                    "[GRID SERVICE]: GetNeighbours() called for scope {0}, region {1} but no such region found", 
+                    scopeID, regionID);
+            }
+            
             return rinfos;
         }
 
-- 
cgit v1.1