From dc5711ad6221f087b6250179ac9a6a389581058c Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 20 Nov 2012 04:10:03 +0000
Subject: minor: If logging full incoming HTTP data, don't deceptively print
 ... at the end of the body.

---
 OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 410a76a..66d80cf 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -719,8 +719,11 @@ namespace OpenSim.Framework.Servers.HttpServer
                 if (DebugLevel == 5)
                 {
                     const int sampleLength = 80;
-                    char[] sampleChars = new char[sampleLength];
+                    char[] sampleChars = new char[sampleLength + 3];
                     reader.Read(sampleChars, 0, sampleLength);
+                    sampleChars[80] = '.';
+                    sampleChars[81] = '.';
+                    sampleChars[82] = '.';
                     output = new string(sampleChars);
                 }
                 else
@@ -728,7 +731,7 @@ namespace OpenSim.Framework.Servers.HttpServer
                     output = reader.ReadToEnd();
                 }
 
-                m_log.DebugFormat("[BASE HTTP SERVER]: {0}...", output.Replace("\n", @"\n"));
+                m_log.DebugFormat("[BASE HTTP SERVER]: {0}", output.Replace("\n", @"\n"));
             }
         }
 
-- 
cgit v1.1


From 0962a35d2ff8e2d0a8cf87bfce542276dfb2c0f5 Mon Sep 17 00:00:00 2001
From: Iain Oliver
Date: Wed, 14 Nov 2012 15:02:35 +0000
Subject: Fix movetotarget on mega regions.

---
 OpenSim/Region/Framework/Scenes/ScenePresence.cs | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 96bca3e..342de78 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1698,8 +1698,18 @@ namespace OpenSim.Region.Framework.Scenes
 //                "[SCENE PRESENCE]: Avatar {0} received request to move to position {1} in {2}",
 //                Name, pos, m_scene.RegionInfo.RegionName);
 
-            if (pos.X < 0 || pos.X >= Constants.RegionSize
-                || pos.Y < 0 || pos.Y >= Constants.RegionSize
+            Vector2 regionSize;
+            IRegionCombinerModule regionCombinerModule = m_scene.RequestModuleInterface<IRegionCombinerModule>();
+            if(regionCombinerModule != null)
+            {
+                regionSize = regionCombinerModule.GetSizeOfMegaregion(m_scene.RegionInfo.RegionID);
+            }
+            else
+            {
+                regionSize = new Vector2(Constants.RegionSize);
+            }
+            if (pos.X < 0 || pos.X >= regionSize.X
+                || pos.Y < 0 || pos.Y >= regionSize.Y
                 || pos.Z < 0)
                 return;
 
@@ -1713,7 +1723,15 @@ namespace OpenSim.Region.Framework.Scenes
 //                pos.Z = AbsolutePosition.Z;
 //            }
 
-            float terrainHeight = (float)m_scene.Heightmap[(int)pos.X, (int)pos.Y];
+            int X = (int)((m_scene.RegionInfo.RegionLocX * Constants.RegionSize) + pos.X);
+            int Y = (int)((m_scene.RegionInfo.RegionLocY * Constants.RegionSize) + pos.Y);
+            UUID target_regionID = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, X, Y).RegionID;
+            Scene targetScene = m_scene;
+            if(!SceneManager.Instance.TryGetScene(target_regionID, out targetScene))
+            {
+                targetScene = m_scene;
+            }
+            float terrainHeight = (float)targetScene.Heightmap[(int)(pos.X % Constants.RegionSize), (int)(pos.Y % Constants.RegionSize)];
             pos.Z = Math.Max(terrainHeight, pos.Z);
 
             // Fudge factor.  It appears that if one clicks "go here" on a piece of ground, the go here request is
-- 
cgit v1.1


From 597a101b9f65e2f0b67f9f2de99654f2e5979855 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 20 Nov 2012 05:09:44 +0000
Subject: Minor formatting for 0962a35d and a few one-line comments as to why
 that code is there

---
 OpenSim/Region/Framework/Scenes/ScenePresence.cs | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 342de78..6f36c0b 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1698,16 +1698,14 @@ namespace OpenSim.Region.Framework.Scenes
 //                "[SCENE PRESENCE]: Avatar {0} received request to move to position {1} in {2}",
 //                Name, pos, m_scene.RegionInfo.RegionName);
 
+            // Allow move to another sub-region within a megaregion
             Vector2 regionSize;
             IRegionCombinerModule regionCombinerModule = m_scene.RequestModuleInterface<IRegionCombinerModule>();
-            if(regionCombinerModule != null)
-            {
+            if (regionCombinerModule != null)
                 regionSize = regionCombinerModule.GetSizeOfMegaregion(m_scene.RegionInfo.RegionID);
-            }
             else
-            {
                 regionSize = new Vector2(Constants.RegionSize);
-            }
+
             if (pos.X < 0 || pos.X >= regionSize.X
                 || pos.Y < 0 || pos.Y >= regionSize.Y
                 || pos.Z < 0)
@@ -1723,14 +1721,15 @@ namespace OpenSim.Region.Framework.Scenes
 //                pos.Z = AbsolutePosition.Z;
 //            }
 
+            // Get terrain height for sub-region in a megaregion if necessary
             int X = (int)((m_scene.RegionInfo.RegionLocX * Constants.RegionSize) + pos.X);
             int Y = (int)((m_scene.RegionInfo.RegionLocY * Constants.RegionSize) + pos.Y);
             UUID target_regionID = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, X, Y).RegionID;
             Scene targetScene = m_scene;
-            if(!SceneManager.Instance.TryGetScene(target_regionID, out targetScene))
-            {
+
+            if (!SceneManager.Instance.TryGetScene(target_regionID, out targetScene))
                 targetScene = m_scene;
-            }
+
             float terrainHeight = (float)targetScene.Heightmap[(int)(pos.X % Constants.RegionSize), (int)(pos.Y % Constants.RegionSize)];
             pos.Z = Math.Max(terrainHeight, pos.Z);
 
-- 
cgit v1.1


From ea65a64f7b1867780261c2a01a6323e057ddc097 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 20 Nov 2012 10:11:57 +0000
Subject: refactor: Move common presence connector code into
 BasePresenceServiceConnector

---
 .../Presence/BasePresenceServiceConnector.cs       | 133 +++++++++++++++++++++
 .../Presence/LocalPresenceServiceConnector.cs      | 113 ++---------------
 .../Presence/RemotePresenceServiceConnector.cs     |  89 +-------------
 .../Presence/Tests/PresenceConnectorsTests.cs      |   3 +-
 4 files changed, 145 insertions(+), 193 deletions(-)
 create mode 100644 OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/BasePresenceServiceConnector.cs

(limited to 'OpenSim')

diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/BasePresenceServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/BasePresenceServiceConnector.cs
new file mode 100644
index 0000000..c84518d
--- /dev/null
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/BasePresenceServiceConnector.cs
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSimulator Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using log4net;
+using Mono.Addins;
+using Nini.Config;
+using OpenMetaverse;
+using OpenSim.Region.Framework.Interfaces;
+using OpenSim.Region.Framework.Scenes;
+using OpenSim.Server.Base;
+using OpenSim.Services.Interfaces;
+using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
+
+namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
+{
+    public class BasePresenceServiceConnector : IPresenceService
+    {
+        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+        protected bool m_Enabled;
+
+        protected PresenceDetector m_PresenceDetector;
+
+        /// <summary>
+        /// Underlying presence service.  Do not use directly.
+        /// </summary>
+        public IPresenceService m_PresenceService;
+
+        public Type ReplaceableInterface
+        {
+            get { return null; }
+        }
+
+        public void AddRegion(Scene scene)
+        {
+            if (!m_Enabled)
+                return;
+
+            //            m_log.DebugFormat(
+            //                "[LOCAL PRESENCE CONNECTOR]: Registering IPresenceService to scene {0}", scene.RegionInfo.RegionName);
+
+            scene.RegisterModuleInterface<IPresenceService>(this);
+            m_PresenceDetector.AddRegion(scene);
+
+            m_log.InfoFormat("[BASE PRESENCE SERVICE CONNECTOR]: Enabled for region {0}", scene.Name);
+        }
+
+        public void RemoveRegion(Scene scene)
+        {
+            if (!m_Enabled)
+                return;
+
+            m_PresenceDetector.RemoveRegion(scene);
+        }
+
+        public void RegionLoaded(Scene scene)
+        {
+            if (!m_Enabled)
+                return;
+
+        }
+
+        public void PostInitialise()
+        {
+        }
+
+        public void Close()
+        {
+        }
+
+        #region IPresenceService
+
+        public bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID)
+        {
+            m_log.Warn("[BASE PRESENCE SERVICE CONNECTOR]: LoginAgent connector not implemented at the simulators");
+            return false;
+        }
+
+        public bool LogoutAgent(UUID sessionID)
+        {
+            return m_PresenceService.LogoutAgent(sessionID);
+        }
+
+        public bool LogoutRegionAgents(UUID regionID)
+        {
+            return m_PresenceService.LogoutRegionAgents(regionID);
+        }
+
+        public bool ReportAgent(UUID sessionID, UUID regionID)
+        {
+            return m_PresenceService.ReportAgent(sessionID, regionID);
+        }
+
+        public PresenceInfo GetAgent(UUID sessionID)
+        {
+            return m_PresenceService.GetAgent(sessionID);
+        }
+
+        public PresenceInfo[] GetAgents(string[] userIDs)
+        {
+            return m_PresenceService.GetAgents(userIDs);
+        }
+
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs
index d8bed1b..db5c520 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs
@@ -24,53 +24,29 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
+
 using System;
 using System.Collections.Generic;
 using System.Reflection;
-
+using log4net;
+using Mono.Addins;
+using Nini.Config;
+using OpenMetaverse;
 using OpenSim.Region.Framework.Interfaces;
 using OpenSim.Region.Framework.Scenes;
 using OpenSim.Server.Base;
 using OpenSim.Services.Interfaces;
 using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
 
-using OpenMetaverse;
-using log4net;
-using Mono.Addins;
-using Nini.Config;
-
 namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
 {
     [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "LocalPresenceServicesConnector")]
-    public class LocalPresenceServicesConnector : ISharedRegionModule, IPresenceService
+    public class LocalPresenceServicesConnector : BasePresenceServiceConnector, ISharedRegionModule, IPresenceService
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private bool m_Enabled = false;
-
-        private PresenceDetector m_PresenceDetector;
-
-        /// <summary>
-        /// Underlying presence service.  Do not use directly.
-        /// </summary>
-        public IPresenceService m_PresenceService;
-
-        public LocalPresenceServicesConnector()
-        {
-        }
-
-        public LocalPresenceServicesConnector(IConfigSource source)
-        {
-            Initialise(source);
-        }
-
         #region ISharedRegionModule
 
-        public Type ReplaceableInterface
-        {
-            get { return null; }
-        }
-
         public string Name
         {
             get { return "LocalPresenceServicesConnector"; }
@@ -121,81 +97,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
             }
         }
 
-        public void PostInitialise()
-        {
-        }
-
-        public void Close()
-        {
-        }
-
-        public void AddRegion(Scene scene)
-        {
-            if (!m_Enabled)
-                return;
-
-            //            m_log.DebugFormat(
-            //                "[LOCAL PRESENCE CONNECTOR]: Registering IPresenceService to scene {0}", scene.RegionInfo.RegionName);
-
-            scene.RegisterModuleInterface<IPresenceService>(this);
-            m_PresenceDetector.AddRegion(scene);
-
-            m_log.InfoFormat("[LOCAL PRESENCE CONNECTOR]: Enabled local presence for region {0}", scene.RegionInfo.RegionName);
-
-        }
-
-        public void RemoveRegion(Scene scene)
-        {
-            if (!m_Enabled)
-                return;
-
-            m_PresenceDetector.RemoveRegion(scene);
-        }
-
-        public void RegionLoaded(Scene scene)
-        {
-            if (!m_Enabled)
-                return;
-
-        }
-
         #endregion
-
-        #region IPresenceService
-
-        public bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID)
-        {
-            m_log.Warn("[LOCAL PRESENCE CONNECTOR]: LoginAgent connector not implemented at the simulators");
-            return false;
-        }
-
-        public bool LogoutAgent(UUID sessionID)
-        {
-            return m_PresenceService.LogoutAgent(sessionID);
-        }
-
-
-        public bool LogoutRegionAgents(UUID regionID)
-        {
-            return m_PresenceService.LogoutRegionAgents(regionID);
-        }
-
-        public bool ReportAgent(UUID sessionID, UUID regionID)
-        {
-            return m_PresenceService.ReportAgent(sessionID, regionID);
-        }
-
-        public PresenceInfo GetAgent(UUID sessionID)
-        {
-            return m_PresenceService.GetAgent(sessionID);
-        }
-
-        public PresenceInfo[] GetAgents(string[] userIDs)
-        {
-            return m_PresenceService.GetAgents(userIDs);
-        }
-
-        #endregion
-
     }
-}
+}
\ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/RemotePresenceServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/RemotePresenceServiceConnector.cs
index be73932..6ca5c28 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/RemotePresenceServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/RemotePresenceServiceConnector.cs
@@ -43,22 +43,12 @@ using Nini.Config;
 namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
 {
     [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "RemotePresenceServicesConnector")]
-    public class RemotePresenceServicesConnector : ISharedRegionModule, IPresenceService
+    public class RemotePresenceServicesConnector : BasePresenceServiceConnector, ISharedRegionModule
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
         #region ISharedRegionModule
 
-        private bool m_Enabled = false;
-
-        private PresenceDetector m_PresenceDetector;
-        private IPresenceService m_RemoteConnector;
-
-        public Type ReplaceableInterface
-        {
-            get { return null; }
-        }
-
         public string Name
         {
             get { return "RemotePresenceServicesConnector"; }
@@ -72,7 +62,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
                 string name = moduleConfig.GetString("PresenceServices", "");
                 if (name == Name)
                 {
-                    m_RemoteConnector = new PresenceServicesConnector(source);
+                    m_PresenceService = new PresenceServicesConnector(source);
 
                     m_Enabled = true;
 
@@ -81,81 +71,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
                     m_log.Info("[REMOTE PRESENCE CONNECTOR]: Remote presence enabled");
                 }
             }
-
-        }
-
-        public void PostInitialise()
-        {
-        }
-
-        public void Close()
-        {
-        }
-
-        public void AddRegion(Scene scene)
-        {
-            if (!m_Enabled)
-                return;
-
-            scene.RegisterModuleInterface<IPresenceService>(this);
-            m_PresenceDetector.AddRegion(scene);
-
-            m_log.InfoFormat("[REMOTE PRESENCE CONNECTOR]: Enabled remote presence for region {0}", scene.RegionInfo.RegionName);
-
-        }
-
-        public void RemoveRegion(Scene scene)
-        {
-            if (!m_Enabled)
-                return;
-
-            m_PresenceDetector.RemoveRegion(scene);
-        }
-
-        public void RegionLoaded(Scene scene)
-        {
-            if (!m_Enabled)
-                return;
-
-        }
-
-        #endregion
-
-        #region IPresenceService
-
-        public bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID)
-        {
-            m_log.Warn("[REMOTE PRESENCE CONNECTOR]: LoginAgent connector not implemented at the simulators");
-            return false;
-        }
-
-        public bool LogoutAgent(UUID sessionID)
-        {
-            return m_RemoteConnector.LogoutAgent(sessionID);
-        }
-
-
-        public bool LogoutRegionAgents(UUID regionID)
-        {
-            return m_RemoteConnector.LogoutRegionAgents(regionID);
-        }
-
-        public bool ReportAgent(UUID sessionID, UUID regionID)
-        {
-            return m_RemoteConnector.ReportAgent(sessionID, regionID);
-        }
-
-        public PresenceInfo GetAgent(UUID sessionID)
-        {
-            return m_RemoteConnector.GetAgent(sessionID);
-        }
-
-        public PresenceInfo[] GetAgents(string[] userIDs)
-        {
-            return m_RemoteConnector.GetAgents(userIDs);
         }
 
         #endregion
-
     }
-}
+}
\ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs
index 4556df3..32e47f9 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs
@@ -56,7 +56,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence.Tests
             config.Configs["PresenceService"].Set("LocalServiceModule", "OpenSim.Services.PresenceService.dll:PresenceService");
             config.Configs["PresenceService"].Set("StorageProvider", "OpenSim.Data.Null.dll");
 
-            m_LocalConnector = new LocalPresenceServicesConnector(config);
+            m_LocalConnector = new LocalPresenceServicesConnector();
+            m_LocalConnector.Initialise(config);
 
             // Let's stick in a test presence
             m_LocalConnector.m_PresenceService.LoginAgent(UUID.Zero.ToString(), UUID.Zero, UUID.Zero);
-- 
cgit v1.1


From f656adee31f5210acb4d1c8c89fe0d1e9362feee Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 20 Nov 2012 10:22:49 +0000
Subject: If GetAgents() is called with an empty userIDs array then don't
 bother with a useless potentially network call on the scene presence service
 connector.

This also eliminates the "[PRESENCE HANDLER]: GetAgents called without required uuids argument"
which has started to pop up in the logs when a call is made with an empty uuid array as occasionally happens.
---
 .../ServiceConnectorsOut/Presence/BasePresenceServiceConnector.cs     | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/BasePresenceServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/BasePresenceServiceConnector.cs
index c84518d..fdbe10a 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/BasePresenceServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/BasePresenceServiceConnector.cs
@@ -125,6 +125,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
 
         public PresenceInfo[] GetAgents(string[] userIDs)
         {
+            // Don't bother potentially making a useless network call if we not going to ask for any users anyway.
+            if (userIDs.Length == 0)
+                return new PresenceInfo[0];
+
             return m_PresenceService.GetAgents(userIDs);
         }
 
-- 
cgit v1.1