diff options
Diffstat (limited to 'OpenSim/Grid')
-rw-r--r-- | OpenSim/Grid/GridServer/GridManager.cs | 75 |
1 files changed, 35 insertions, 40 deletions
diff --git a/OpenSim/Grid/GridServer/GridManager.cs b/OpenSim/Grid/GridServer/GridManager.cs index 7739a55..0fc2147 100644 --- a/OpenSim/Grid/GridServer/GridManager.cs +++ b/OpenSim/Grid/GridServer/GridManager.cs | |||
@@ -165,19 +165,15 @@ namespace OpenSim.Grid.GridServer | |||
165 | return null; | 165 | return null; |
166 | } | 166 | } |
167 | 167 | ||
168 | public Dictionary<ulong, RegionProfileData> GetRegions(uint xmin, uint ymin, uint xmax, uint ymax) | 168 | public List<RegionProfileData> GetRegions(uint xmin, uint ymin, uint xmax, uint ymax) |
169 | { | 169 | { |
170 | Dictionary<ulong, RegionProfileData> regions = new Dictionary<ulong, RegionProfileData>(); | 170 | List<RegionProfileData> regions = new List<RegionProfileData>(); |
171 | 171 | ||
172 | foreach (IGridDataPlugin plugin in _plugins) | 172 | foreach (IGridDataPlugin plugin in _plugins) |
173 | { | 173 | { |
174 | try | 174 | try |
175 | { | 175 | { |
176 | RegionProfileData[] neighbours = plugin.GetProfilesInRange(xmin, ymin, xmax, ymax); | 176 | regions.AddRange(plugin.GetProfilesInRange(xmin, ymin, xmax, ymax)); |
177 | foreach (RegionProfileData neighbour in neighbours) | ||
178 | { | ||
179 | regions[neighbour.regionHandle] = neighbour; | ||
180 | } | ||
181 | } | 177 | } |
182 | catch | 178 | catch |
183 | { | 179 | { |
@@ -377,15 +373,15 @@ namespace OpenSim.Grid.GridServer | |||
377 | m_log.Warn("[LOGIN PRELUDE]: Invalid login parameters, sending back error response."); | 373 | m_log.Warn("[LOGIN PRELUDE]: Invalid login parameters, sending back error response."); |
378 | return ErrorResponse("Wrong format in login parameters. Please verify parameters." + e.ToString()); | 374 | return ErrorResponse("Wrong format in login parameters. Please verify parameters." + e.ToString()); |
379 | } | 375 | } |
380 | 376 | ||
381 | if (!Config.AllowRegionRegistration) | 377 | if (!Config.AllowRegionRegistration) |
382 | { | 378 | { |
383 | m_log.InfoFormat( | 379 | m_log.InfoFormat( |
384 | "[LOGIN END]: Disabled region registration blocked login request from simulator: {0}", | 380 | "[LOGIN END]: Disabled region registration blocked login request from simulator: {0}", |
385 | sim.regionName); | 381 | sim.regionName); |
386 | 382 | ||
387 | return ErrorResponse("The grid is currently not accepting region registrations."); | 383 | return ErrorResponse("The grid is currently not accepting region registrations."); |
388 | } | 384 | } |
389 | 385 | ||
390 | m_log.InfoFormat("[LOGIN BEGIN]: Received login request from simulator: {0}", sim.regionName); | 386 | m_log.InfoFormat("[LOGIN BEGIN]: Received login request from simulator: {0}", sim.regionName); |
391 | 387 | ||
@@ -530,21 +526,21 @@ namespace OpenSim.Grid.GridServer | |||
530 | Hashtable NeighbourBlock; | 526 | Hashtable NeighbourBlock; |
531 | 527 | ||
532 | //First use the fast method. (not implemented in SQLLite) | 528 | //First use the fast method. (not implemented in SQLLite) |
533 | Dictionary<ulong, RegionProfileData> neighbours = GetRegions(sim.regionLocX - 1, sim.regionLocY - 1, sim.regionLocX + 1, sim.regionLocY + 1); | 529 | List<RegionProfileData> neighbours = GetRegions(sim.regionLocX - 1, sim.regionLocY - 1, sim.regionLocX + 1, sim.regionLocY + 1); |
534 | 530 | ||
535 | if (neighbours.Count > 0) | 531 | if (neighbours.Count > 0) |
536 | { | 532 | { |
537 | foreach (KeyValuePair<ulong, RegionProfileData> aSim in neighbours) | 533 | foreach (RegionProfileData aSim in neighbours) |
538 | { | 534 | { |
539 | NeighbourBlock = new Hashtable(); | 535 | NeighbourBlock = new Hashtable(); |
540 | NeighbourBlock["sim_ip"] = Util.GetHostFromDNS(aSim.Value.serverIP.ToString()).ToString(); | 536 | NeighbourBlock["sim_ip"] = Util.GetHostFromDNS(aSim.serverIP.ToString()).ToString(); |
541 | NeighbourBlock["sim_port"] = aSim.Value.serverPort.ToString(); | 537 | NeighbourBlock["sim_port"] = aSim.serverPort.ToString(); |
542 | NeighbourBlock["region_locx"] = aSim.Value.regionLocX.ToString(); | 538 | NeighbourBlock["region_locx"] = aSim.regionLocX.ToString(); |
543 | NeighbourBlock["region_locy"] = aSim.Value.regionLocY.ToString(); | 539 | NeighbourBlock["region_locy"] = aSim.regionLocY.ToString(); |
544 | NeighbourBlock["UUID"] = aSim.Value.ToString(); | 540 | NeighbourBlock["UUID"] = aSim.ToString(); |
545 | NeighbourBlock["regionHandle"] = aSim.Value.regionHandle.ToString(); | 541 | NeighbourBlock["regionHandle"] = aSim.regionHandle.ToString(); |
546 | 542 | ||
547 | if (aSim.Value.UUID != sim.UUID) | 543 | if (aSim.UUID != sim.UUID) |
548 | { | 544 | { |
549 | SimNeighboursData.Add(NeighbourBlock); | 545 | SimNeighboursData.Add(NeighbourBlock); |
550 | } | 546 | } |
@@ -835,29 +831,28 @@ namespace OpenSim.Grid.GridServer | |||
835 | 831 | ||
836 | if (fastMode) | 832 | if (fastMode) |
837 | { | 833 | { |
838 | Dictionary<ulong, RegionProfileData> neighbours = | 834 | List<RegionProfileData> neighbours = GetRegions((uint)xmin, (uint)ymin, (uint)xmax, (uint)ymax); |
839 | GetRegions((uint)xmin, (uint)ymin, (uint)xmax, (uint)ymax); | ||
840 | 835 | ||
841 | foreach (KeyValuePair<ulong, RegionProfileData> aSim in neighbours) | 836 | foreach (RegionProfileData aSim in neighbours) |
842 | { | 837 | { |
843 | Hashtable simProfileBlock = new Hashtable(); | 838 | Hashtable simProfileBlock = new Hashtable(); |
844 | simProfileBlock["x"] = aSim.Value.regionLocX.ToString(); | 839 | simProfileBlock["x"] = aSim.regionLocX.ToString(); |
845 | simProfileBlock["y"] = aSim.Value.regionLocY.ToString(); | 840 | simProfileBlock["y"] = aSim.regionLocY.ToString(); |
846 | //m_log.DebugFormat("[MAP]: Sending neighbour info for {0},{1}", aSim.Value.regionLocX, aSim.Value.regionLocY); | 841 | //m_log.DebugFormat("[MAP]: Sending neighbour info for {0},{1}", aSim.regionLocX, aSim.regionLocY); |
847 | simProfileBlock["name"] = aSim.Value.regionName; | 842 | simProfileBlock["name"] = aSim.regionName; |
848 | simProfileBlock["access"] = 21; | 843 | simProfileBlock["access"] = 21; |
849 | simProfileBlock["region-flags"] = 512; | 844 | simProfileBlock["region-flags"] = 512; |
850 | simProfileBlock["water-height"] = 0; | 845 | simProfileBlock["water-height"] = 0; |
851 | simProfileBlock["agents"] = 1; | 846 | simProfileBlock["agents"] = 1; |
852 | simProfileBlock["map-image-id"] = aSim.Value.regionMapTextureID.ToString(); | 847 | simProfileBlock["map-image-id"] = aSim.regionMapTextureID.ToString(); |
853 | 848 | ||
854 | // For Sugilite compatibility | 849 | // For Sugilite compatibility |
855 | simProfileBlock["regionhandle"] = aSim.Value.regionHandle.ToString(); | 850 | simProfileBlock["regionhandle"] = aSim.regionHandle.ToString(); |
856 | simProfileBlock["sim_ip"] = aSim.Value.serverIP.ToString(); | 851 | simProfileBlock["sim_ip"] = aSim.serverIP.ToString(); |
857 | simProfileBlock["sim_port"] = aSim.Value.serverPort.ToString(); | 852 | simProfileBlock["sim_port"] = aSim.serverPort.ToString(); |
858 | simProfileBlock["sim_uri"] = aSim.Value.serverURI.ToString(); | 853 | simProfileBlock["sim_uri"] = aSim.serverURI.ToString(); |
859 | simProfileBlock["uuid"] = aSim.Value.UUID.ToString(); | 854 | simProfileBlock["uuid"] = aSim.UUID.ToString(); |
860 | simProfileBlock["remoting_port"] = aSim.Value.remotingPort; | 855 | simProfileBlock["remoting_port"] = aSim.remotingPort; |
861 | 856 | ||
862 | simProfileList.Add(simProfileBlock); | 857 | simProfileList.Add(simProfileBlock); |
863 | } | 858 | } |
@@ -913,15 +908,15 @@ namespace OpenSim.Grid.GridServer | |||
913 | public XmlRpcResponse XmlRpcSearchForRegionMethod(XmlRpcRequest request) | 908 | public XmlRpcResponse XmlRpcSearchForRegionMethod(XmlRpcRequest request) |
914 | { | 909 | { |
915 | Hashtable requestData = (Hashtable)request.Params[0]; | 910 | Hashtable requestData = (Hashtable)request.Params[0]; |
916 | 911 | ||
917 | if (!requestData.ContainsKey("name") || !requestData.Contains("maxNumber")) | 912 | if (!requestData.ContainsKey("name") || !requestData.Contains("maxNumber")) |
918 | { | 913 | { |
919 | m_log.Warn("[DATA] Invalid region-search request; missing name or maxNumber"); | 914 | m_log.Warn("[DATA] Invalid region-search request; missing name or maxNumber"); |
920 | return new XmlRpcResponse(500, "Missing name or maxNumber in region search request"); | 915 | return new XmlRpcResponse(500, "Missing name or maxNumber in region search request"); |
921 | } | 916 | } |
922 | 917 | ||
923 | Hashtable responseData = new Hashtable(); | 918 | Hashtable responseData = new Hashtable(); |
924 | 919 | ||
925 | string name = (string)requestData["name"]; | 920 | string name = (string)requestData["name"]; |
926 | int maxNumber = Convert.ToInt32((string)requestData["maxNumber"]); | 921 | int maxNumber = Convert.ToInt32((string)requestData["maxNumber"]); |
927 | if (maxNumber == 0 || name.Length < 3) | 922 | if (maxNumber == 0 || name.Length < 3) |
@@ -1215,7 +1210,7 @@ namespace OpenSim.Grid.GridServer | |||
1215 | } | 1210 | } |
1216 | return response; | 1211 | return response; |
1217 | } | 1212 | } |
1218 | 1213 | ||
1219 | /// <summary> | 1214 | /// <summary> |
1220 | /// Construct an XMLRPC registration disabled response | 1215 | /// Construct an XMLRPC registration disabled response |
1221 | /// </summary> | 1216 | /// </summary> |
@@ -1228,7 +1223,7 @@ namespace OpenSim.Grid.GridServer | |||
1228 | errorResponse.Value = errorResponseData; | 1223 | errorResponse.Value = errorResponseData; |
1229 | errorResponseData["restricted"] = error; | 1224 | errorResponseData["restricted"] = error; |
1230 | return errorResponse; | 1225 | return errorResponse; |
1231 | } | 1226 | } |
1232 | } | 1227 | } |
1233 | 1228 | ||
1234 | /// <summary> | 1229 | /// <summary> |