diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
index 270daad49e..026c6c884c 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs
@@ -160,16 +160,24 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
#region ISimulation
- public IScene GetScene(ulong regionhandle)
+ public IScene GetScene(UUID regionId)
{
- foreach (Scene s in m_scenes.Values)
+ if (m_scenes.ContainsKey(regionId))
{
- if (s.RegionInfo.RegionHandle == regionhandle)
- return s;
+ return m_scenes[regionId];
}
+ else
+ {
+ // FIXME: This was pre-existing behaviour but possibly not a good idea, since it hides an error rather
+ // than making it obvious and fixable. Need to see if the error message comes up in practice.
+ Scene s = m_scenes.Values.ToArray()[0];
- // ? weird. should not happen
- return m_scenes.Values.ToArray()[0];
+ m_log.ErrorFormat(
+ "[LOCAL SIMULATION CONNECTOR]: Region with id {0} not found. Returning {1} {2} instead",
+ regionId, s.RegionInfo.RegionName, s.RegionInfo.RegionID);
+
+ return s;
+ }
}
public ISimulationService GetInnerService()
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs
index eaf9506332..3d2851806f 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs
@@ -151,9 +151,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
#region IInterregionComms
- public IScene GetScene(ulong handle)
+ public IScene GetScene(UUID regionId)
{
- return m_localBackend.GetScene(handle);
+ return m_localBackend.GetScene(regionId);
}
public ISimulationService GetInnerService()
diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
index 5c9be8f0de..99ae7f0405 100644
--- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
+++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs
@@ -546,7 +546,7 @@ namespace OpenSim.Server.Handlers.Simulation
AgentData agent = new AgentData();
try
{
- agent.Unpack(args, m_SimulationService.GetScene(destination.RegionHandle));
+ agent.Unpack(args, m_SimulationService.GetScene(destination.RegionID));
}
catch (Exception ex)
{
@@ -566,7 +566,7 @@ namespace OpenSim.Server.Handlers.Simulation
AgentPosition agent = new AgentPosition();
try
{
- agent.Unpack(args, m_SimulationService.GetScene(destination.RegionHandle));
+ agent.Unpack(args, m_SimulationService.GetScene(destination.RegionID));
}
catch (Exception ex)
{
diff --git a/OpenSim/Server/Handlers/Simulation/ObjectHandlers.cs b/OpenSim/Server/Handlers/Simulation/ObjectHandlers.cs
index f0d8f69827..a4d03ba891 100644
--- a/OpenSim/Server/Handlers/Simulation/ObjectHandlers.cs
+++ b/OpenSim/Server/Handlers/Simulation/ObjectHandlers.cs
@@ -161,7 +161,7 @@ namespace OpenSim.Server.Handlers.Simulation
if (args.ContainsKey("extra") && args["extra"] != null)
extraStr = args["extra"].AsString();
- IScene s = m_SimulationService.GetScene(destination.RegionHandle);
+ IScene s = m_SimulationService.GetScene(destination.RegionID);
ISceneObject sog = null;
try
{
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
index cb003d1dd2..cc46ba88c1 100644
--- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs
@@ -62,7 +62,7 @@ namespace OpenSim.Services.Connectors.Simulation
//m_Region = region;
}
- public IScene GetScene(ulong regionHandle)
+ public IScene GetScene(UUID regionId)
{
return null;
}
diff --git a/OpenSim/Services/Interfaces/ISimulationService.cs b/OpenSim/Services/Interfaces/ISimulationService.cs
index 36fd6fcaa9..4e52532415 100644
--- a/OpenSim/Services/Interfaces/ISimulationService.cs
+++ b/OpenSim/Services/Interfaces/ISimulationService.cs
@@ -35,7 +35,17 @@ namespace OpenSim.Services.Interfaces
{
public interface ISimulationService
{
- IScene GetScene(ulong regionHandle);
+ ///
+ /// Retrieve the scene with the given region ID.
+ ///
+ ///
+ /// Region identifier.
+ ///
+ ///
+ /// The scene.
+ ///
+ IScene GetScene(UUID regionId);
+
ISimulationService GetInnerService();
#region Agents