aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorTleiades Hax2007-10-18 15:10:43 +0000
committerTleiades Hax2007-10-18 15:10:43 +0000
commit05df8571323c535b5c1ce1b0532e88236b143b7e (patch)
tree6f275d5b682231906315363514e98b7b06557fda /OpenSim
parent* Removed some comments (diff)
downloadopensim-SC-05df8571323c535b5c1ce1b0532e88236b143b7e.zip
opensim-SC-05df8571323c535b5c1ce1b0532e88236b143b7e.tar.gz
opensim-SC-05df8571323c535b5c1ce1b0532e88236b143b7e.tar.bz2
opensim-SC-05df8571323c535b5c1ce1b0532e88236b143b7e.tar.xz
Possible fix for: Remoting exceptions with adjacent non-running sims.
Bugs 449, 454, 408, 244, 197 implemented InformClientOfNeighbours as an asynchroneous process, handling timeouts without blocking the main thread. Improved logging of errors, removed catch all in try catch
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/Communications/IGridServices.cs5
-rw-r--r--OpenSim/Framework/General/Types/RegionInfo.cs102
-rw-r--r--OpenSim/Grid/GridServer/GridManager.cs1
-rw-r--r--OpenSim/Grid/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs2
-rw-r--r--OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs2
-rw-r--r--OpenSim/Region/Communications/Local/LocalBackEndServices.cs15
-rw-r--r--OpenSim/Region/Communications/Local/LocalLoginService.cs2
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs54
-rw-r--r--OpenSim/Region/Environment/Modules/DynamicTextureModule.cs4
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Inventory.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs33
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs4
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs2
14 files changed, 148 insertions, 82 deletions
diff --git a/OpenSim/Framework/Communications/IGridServices.cs b/OpenSim/Framework/Communications/IGridServices.cs
index d538e23..4167b65 100644
--- a/OpenSim/Framework/Communications/IGridServices.cs
+++ b/OpenSim/Framework/Communications/IGridServices.cs
@@ -27,6 +27,9 @@
27*/ 27*/
28 28
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Net;
31using libsecondlife;
32
30using OpenSim.Framework.Types; 33using OpenSim.Framework.Types;
31 34
32namespace OpenSim.Framework.Communications 35namespace OpenSim.Framework.Communications
@@ -34,7 +37,7 @@ namespace OpenSim.Framework.Communications
34 public interface IGridServices 37 public interface IGridServices
35 { 38 {
36 RegionCommsListener RegisterRegion(RegionInfo regionInfos); 39 RegionCommsListener RegisterRegion(RegionInfo regionInfos);
37 List<RegionInfo> RequestNeighbours(RegionInfo regionInfo); 40 List<SimpleRegionInfo> RequestNeighbours(uint x, uint y);
38 RegionInfo RequestNeighbourInfo(ulong regionHandle); 41 RegionInfo RequestNeighbourInfo(ulong regionHandle);
39 List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY); 42 List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY);
40 } 43 }
diff --git a/OpenSim/Framework/General/Types/RegionInfo.cs b/OpenSim/Framework/General/Types/RegionInfo.cs
index 5054510..77109aa 100644
--- a/OpenSim/Framework/General/Types/RegionInfo.cs
+++ b/OpenSim/Framework/General/Types/RegionInfo.cs
@@ -40,20 +40,51 @@ using OpenSim.Framework.Configuration;
40 40
41namespace OpenSim.Framework.Types 41namespace OpenSim.Framework.Types
42{ 42{
43 public class RegionInfo 43 public class SimpleRegionInfo
44 { 44 {
45 public LLUUID SimUUID = new LLUUID(); 45 public SimpleRegionInfo()
46 public string RegionName = ""; 46 {
47 }
47 48
48 private IPEndPoint m_internalEndPoint; 49 public SimpleRegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri)
49 public IPEndPoint InternalEndPoint 50 {
51
52 m_regionLocX = regionLocX;
53 m_regionLocY = regionLocY;
54
55 m_internalEndPoint = internalEndPoint;
56 m_externalHostName = externalUri;
57 }
58
59 public SimpleRegionInfo(uint regionLocX, uint regionLocY, string externalUri, int port)
60 {
61
62 m_regionLocX = regionLocX;
63 m_regionLocY = regionLocY;
64
65 m_externalHostName = externalUri;
66
67 m_internalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), port);
68 }
69
70 public LLUUID RegionID = new LLUUID();
71
72 private uint m_remotingPort;
73 public uint RemotingPort
50 { 74 {
51 get 75 get
52 { 76 {
53 return m_internalEndPoint; 77 return m_remotingPort;
78 }
79 set
80 {
81 m_remotingPort = value;
54 } 82 }
55 } 83 }
56 84
85 public string RemotingAddress;
86
87
57 public IPEndPoint ExternalEndPoint 88 public IPEndPoint ExternalEndPoint
58 { 89 {
59 get 90 get
@@ -86,9 +117,14 @@ namespace OpenSim.Framework.Types
86 117
87 return new IPEndPoint(ia, m_internalEndPoint.Port); 118 return new IPEndPoint(ia, m_internalEndPoint.Port);
88 } 119 }
120
121 set
122 {
123 m_externalHostName = value.ToString();
124 }
89 } 125 }
90 126
91 private string m_externalHostName; 127 protected string m_externalHostName;
92 public string ExternalHostName 128 public string ExternalHostName
93 { 129 {
94 get 130 get
@@ -97,51 +133,45 @@ namespace OpenSim.Framework.Types
97 } 133 }
98 } 134 }
99 135
100 private uint? m_regionLocX; 136 protected IPEndPoint m_internalEndPoint;
101 public uint RegionLocX 137 public IPEndPoint InternalEndPoint
102 { 138 {
103 get 139 get
104 { 140 {
105 return m_regionLocX.Value; 141 return m_internalEndPoint;
106 } 142 }
107 } 143 }
108 144
109 private uint? m_regionLocY; 145 protected uint? m_regionLocX;
110 public uint RegionLocY 146 public uint RegionLocX
111 { 147 {
112 get 148 get
113 { 149 {
114 return m_regionLocY.Value; 150 return m_regionLocX.Value;
115 } 151 }
116 } 152 }
117 153
118 private ulong? m_regionHandle; 154 protected uint? m_regionLocY;
119 public ulong RegionHandle 155 public uint RegionLocY
120 { 156 {
121 get 157 get
122 { 158 {
123 if (!m_regionHandle.HasValue) 159 return m_regionLocY.Value;
124 {
125 m_regionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256));
126 }
127
128 return m_regionHandle.Value;
129 } 160 }
130 } 161 }
131 162
132 private uint m_remotingPort; 163 public ulong RegionHandle
133 public uint RemotingPort
134 { 164 {
135 get 165 get
136 { 166 {
137 return m_remotingPort; 167 return Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256));
138 }
139 set
140 {
141 m_remotingPort = value;
142 } 168 }
143 } 169 }
144 public string RemotingAddress; 170 }
171
172 public class RegionInfo : SimpleRegionInfo
173 {
174 public string RegionName = "";
145 175
146 public string DataStore = ""; 176 public string DataStore = "";
147 public bool isSandbox = false; 177 public bool isSandbox = false;
@@ -161,15 +191,11 @@ namespace OpenSim.Framework.Types
161 configMember.performConfigurationRetrieve(); 191 configMember.performConfigurationRetrieve();
162 } 192 }
163 193
164 public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) 194 public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) :
195 base(regionLocX, regionLocY, internalEndPoint, externalUri)
165 { 196 {
166 197
167 estateSettings = new EstateSettings(); 198 estateSettings = new EstateSettings();
168 m_regionLocX = regionLocX;
169 m_regionLocY = regionLocY;
170
171 m_internalEndPoint = internalEndPoint;
172 m_externalHostName = externalUri;
173 } 199 }
174 200
175 public void LoadFromNiniSource(IConfigSource source) 201 public void LoadFromNiniSource(IConfigSource source)
@@ -180,7 +206,7 @@ namespace OpenSim.Framework.Types
180 public void LoadFromNiniSource(IConfigSource source, string sectionName) 206 public void LoadFromNiniSource(IConfigSource source, string sectionName)
181 { 207 {
182 string errorMessage = ""; 208 string errorMessage = "";
183 this.SimUUID = new LLUUID(source.Configs[sectionName].GetString("sim_UUID", LLUUID.Random().ToStringHyphenated())); 209 this.RegionID = new LLUUID(source.Configs[sectionName].GetString("Region_ID", LLUUID.Random().ToStringHyphenated()));
184 this.RegionName = source.Configs[sectionName].GetString("sim_name", "OpenSim Test"); 210 this.RegionName = source.Configs[sectionName].GetString("sim_name", "OpenSim Test");
185 this.m_regionLocX = Convert.ToUInt32(source.Configs[sectionName].GetString("sim_location_x", "1000")); 211 this.m_regionLocX = Convert.ToUInt32(source.Configs[sectionName].GetString("sim_location_x", "1000"));
186 this.m_regionLocY = Convert.ToUInt32(source.Configs[sectionName].GetString("sim_location_y", "1000")); 212 this.m_regionLocY = Convert.ToUInt32(source.Configs[sectionName].GetString("sim_location_y", "1000"));
@@ -220,7 +246,7 @@ namespace OpenSim.Framework.Types
220 246
221 public void loadConfigurationOptions() 247 public void loadConfigurationOptions()
222 { 248 {
223 configMember.addConfigurationOption("sim_UUID", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, "UUID of Simulator (Default is recommended, random UUID)", LLUUID.Random().ToString(), true); 249 configMember.addConfigurationOption("Region_ID", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, "UUID of Simulator (Default is recommended, random UUID)", LLUUID.Random().ToString(), true);
224 configMember.addConfigurationOption("sim_name", ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, "Simulator Name", "OpenSim Test", false); 250 configMember.addConfigurationOption("sim_name", ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY, "Simulator Name", "OpenSim Test", false);
225 configMember.addConfigurationOption("sim_location_x", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, "Grid Location (X Axis)", "1000", false); 251 configMember.addConfigurationOption("sim_location_x", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, "Grid Location (X Axis)", "1000", false);
226 configMember.addConfigurationOption("sim_location_y", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, "Grid Location (Y Axis)", "1000", false); 252 configMember.addConfigurationOption("sim_location_y", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, "Grid Location (Y Axis)", "1000", false);
@@ -238,7 +264,7 @@ namespace OpenSim.Framework.Types
238 switch (configuration_key) 264 switch (configuration_key)
239 { 265 {
240 case "sim_UUID": 266 case "sim_UUID":
241 this.SimUUID = (LLUUID)configuration_result; 267 this.RegionID = (LLUUID)configuration_result;
242 break; 268 break;
243 case "sim_name": 269 case "sim_name":
244 this.RegionName = (string)configuration_result; 270 this.RegionName = (string)configuration_result;
diff --git a/OpenSim/Grid/GridServer/GridManager.cs b/OpenSim/Grid/GridServer/GridManager.cs
index 81197fd..9800b74 100644
--- a/OpenSim/Grid/GridServer/GridManager.cs
+++ b/OpenSim/Grid/GridServer/GridManager.cs
@@ -482,6 +482,7 @@ namespace OpenSim.Grid.GridServer
482 simProfileBlock["sim_port"] = aSim.Value.serverPort.ToString(); 482 simProfileBlock["sim_port"] = aSim.Value.serverPort.ToString();
483 simProfileBlock["sim_uri"] = aSim.Value.serverURI.ToString(); 483 simProfileBlock["sim_uri"] = aSim.Value.serverURI.ToString();
484 simProfileBlock["uuid"] = aSim.Value.UUID.ToStringHyphenated(); 484 simProfileBlock["uuid"] = aSim.Value.UUID.ToStringHyphenated();
485 simProfileBlock["remoting_port"] = aSim.Value.remotingPort;
485 486
486 simProfileList.Add(simProfileBlock); 487 simProfileList.Add(simProfileBlock);
487 } 488 }
diff --git a/OpenSim/Grid/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs b/OpenSim/Grid/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
index 90fe2cf..e5728fe 100644
--- a/OpenSim/Grid/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Grid/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
@@ -1168,7 +1168,7 @@ namespace OpenSim.Grid.ScriptEngine.DotNetEngine.Compiler
1168 if (dynamicID == "") 1168 if (dynamicID == "")
1169 { 1169 {
1170 IDynamicTextureManager textureManager = this.World.RequestModuleInterface<IDynamicTextureManager>(); 1170 IDynamicTextureManager textureManager = this.World.RequestModuleInterface<IDynamicTextureManager>();
1171 LLUUID createdTexture = textureManager.AddDynamicTextureURL(World.RegionInfo.SimUUID, this.m_host.UUID, contentType, url, extraParams, timer); 1171 LLUUID createdTexture = textureManager.AddDynamicTextureURL(World.RegionInfo.RegionID, this.m_host.UUID, contentType, url, extraParams, timer);
1172 return createdTexture.ToStringHyphenated(); 1172 return createdTexture.ToStringHyphenated();
1173 } 1173 }
1174 else 1174 else
diff --git a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
index e526f73..d92127f 100644
--- a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
+++ b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
@@ -519,7 +519,7 @@ namespace OpenSim.Region.ClientStack
519 { 519 {
520 AssetLandmark lm = new AssetLandmark(lma); 520 AssetLandmark lm = new AssetLandmark(lma);
521 521
522 if (lm.RegionID == m_scene.RegionInfo.SimUUID) 522 if (lm.RegionID == m_scene.RegionInfo.RegionID)
523 { 523 {
524 TeleportLocalPacket tpLocal = new TeleportLocalPacket(); 524 TeleportLocalPacket tpLocal = new TeleportLocalPacket();
525 525
diff --git a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs
index 9a6bc82..fdc3994 100644
--- a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs
+++ b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs
@@ -72,20 +72,20 @@ namespace OpenSim.Region.Communications.Local
72 /// </summary> 72 /// </summary>
73 /// <param name="regionInfo"></param> 73 /// <param name="regionInfo"></param>
74 /// <returns></returns> 74 /// <returns></returns>
75 public List<RegionInfo> RequestNeighbours(RegionInfo regionInfo) 75 public List<SimpleRegionInfo> RequestNeighbours(uint x, uint y)
76 { 76 {
77 // Console.WriteLine("Finding Neighbours to " + regionInfo.RegionHandle); 77 // Console.WriteLine("Finding Neighbours to " + regionInfo.RegionHandle);
78 List<RegionInfo> neighbours = new List<RegionInfo>(); 78 List<SimpleRegionInfo> neighbours = new List<SimpleRegionInfo>();
79 79
80 foreach (RegionInfo reg in this.m_regions.Values) 80 foreach (RegionInfo reg in m_regions.Values)
81 { 81 {
82 // Console.WriteLine("CommsManager- RequestNeighbours() checking region " + reg.RegionLocX + " , "+ reg.RegionLocY); 82 // Console.WriteLine("CommsManager- RequestNeighbours() checking region " + reg.RegionLocX + " , "+ reg.RegionLocY);
83 if (reg.RegionHandle != regionInfo.RegionHandle) 83 if (reg.RegionLocX != x || reg.RegionLocY != y)
84 { 84 {
85 //Console.WriteLine("CommsManager- RequestNeighbours() - found a different region in list, checking location"); 85 //Console.WriteLine("CommsManager- RequestNeighbours() - found a different region in list, checking location");
86 if ((reg.RegionLocX > (regionInfo.RegionLocX - 2)) && (reg.RegionLocX < (regionInfo.RegionLocX + 2))) 86 if ((reg.RegionLocX > (x - 2)) && (reg.RegionLocX < (x + 2)))
87 { 87 {
88 if ((reg.RegionLocY > (regionInfo.RegionLocY - 2)) && (reg.RegionLocY < (regionInfo.RegionLocY + 2))) 88 if ((reg.RegionLocY > (x - 2)) && (reg.RegionLocY < (x + 2)))
89 { 89 {
90 neighbours.Add(reg); 90 neighbours.Add(reg);
91 } 91 }
@@ -223,7 +223,7 @@ namespace OpenSim.Region.Communications.Local
223 regData["status"] = "active"; 223 regData["status"] = "active";
224 regData["handle"] = region.ToString(); 224 regData["handle"] = region.ToString();
225 225
226 respData[reg.SimUUID.ToStringHyphenated()] = regData; 226 respData[reg.RegionID.ToStringHyphenated()] = regData;
227 } 227 }
228 } 228 }
229 229
@@ -254,3 +254,4 @@ namespace OpenSim.Region.Communications.Local
254 } 254 }
255} 255}
256 256
257
diff --git a/OpenSim/Region/Communications/Local/LocalLoginService.cs b/OpenSim/Region/Communications/Local/LocalLoginService.cs
index 1a92aaa..9c10d04 100644
--- a/OpenSim/Region/Communications/Local/LocalLoginService.cs
+++ b/OpenSim/Region/Communications/Local/LocalLoginService.cs
@@ -127,7 +127,7 @@ namespace OpenSim.Region.Communications.Local
127 127
128 response.SeedCapability = "http://" + reg.ExternalHostName + ":" + this.serversInfo.HttpListenerPort.ToString() + "/CAPS/" + capsPath + "0000/"; 128 response.SeedCapability = "http://" + reg.ExternalHostName + ":" + this.serversInfo.HttpListenerPort.ToString() + "/CAPS/" + capsPath + "0000/";
129 // response.SeedCapability = "http://" + reg.ExternalHostName + ":" + this.serversInfo.HttpListenerPort.ToString() + "/CapsSeed/" + capsPath + "0000/"; 129 // response.SeedCapability = "http://" + reg.ExternalHostName + ":" + this.serversInfo.HttpListenerPort.ToString() + "/CapsSeed/" + capsPath + "0000/";
130 theUser.currentAgent.currentRegion = reg.SimUUID; 130 theUser.currentAgent.currentRegion = reg.RegionID;
131 theUser.currentAgent.currentHandle = reg.RegionHandle; 131 theUser.currentAgent.currentHandle = reg.RegionHandle;
132 132
133 Login _login = new Login(); 133 Login _login = new Login();
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index 1264052..1a9584a 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -30,9 +30,12 @@ using System;
30using System.Collections; 30using System.Collections;
31using System.Collections.Generic; 31using System.Collections.Generic;
32using System.Net; 32using System.Net;
33using System.Net.Sockets;
33using System.Runtime.Remoting; 34using System.Runtime.Remoting;
34using System.Runtime.Remoting.Channels; 35using System.Runtime.Remoting.Channels;
35using System.Runtime.Remoting.Channels.Tcp; 36using System.Runtime.Remoting.Channels.Tcp;
37using System.Security.Authentication;
38
36using libsecondlife; 39using libsecondlife;
37using Nwc.XmlRpc; 40using Nwc.XmlRpc;
38using OpenSim.Framework; 41using OpenSim.Framework;
@@ -78,7 +81,7 @@ namespace OpenSim.Region.Communications.OGS1
78 // Login / Authentication 81 // Login / Authentication
79 82
80 GridParams["authkey"] = serversInfo.GridSendKey; 83 GridParams["authkey"] = serversInfo.GridSendKey;
81 GridParams["UUID"] = regionInfo.SimUUID.ToStringHyphenated(); 84 GridParams["UUID"] = regionInfo.RegionID.ToStringHyphenated();
82 GridParams["sim_ip"] = regionInfo.ExternalHostName; 85 GridParams["sim_ip"] = regionInfo.ExternalHostName;
83 GridParams["sim_port"] = regionInfo.InternalEndPoint.Port.ToString(); 86 GridParams["sim_port"] = regionInfo.InternalEndPoint.Port.ToString();
84 GridParams["region_locx"] = regionInfo.RegionLocX.ToString(); 87 GridParams["region_locx"] = regionInfo.RegionLocX.ToString();
@@ -115,12 +118,12 @@ namespace OpenSim.Region.Communications.OGS1
115 /// </summary> 118 /// </summary>
116 /// <param name="regionInfo"></param> 119 /// <param name="regionInfo"></param>
117 /// <returns></returns> 120 /// <returns></returns>
118 public List<RegionInfo> RequestNeighbours(RegionInfo regionInfo) 121 public List<SimpleRegionInfo> RequestNeighbours(uint x, uint y)
119 { 122 {
120 123
121 Hashtable respData = MapBlockQuery((int)regionInfo.RegionLocX - 1, (int)regionInfo.RegionLocY - 1, (int)regionInfo.RegionLocX + 1, (int)regionInfo.RegionLocY + 1); 124 Hashtable respData = MapBlockQuery((int)x - 1, (int)y - 1, (int)x + 1, (int)y + 1);
122 125
123 List<RegionInfo> neighbours = new List<RegionInfo>(); 126 List<SimpleRegionInfo> neighbours = new List<SimpleRegionInfo>();
124 127
125 foreach (ArrayList neighboursList in respData.Values) 128 foreach (ArrayList neighboursList in respData.Values)
126 { 129 {
@@ -128,27 +131,20 @@ namespace OpenSim.Region.Communications.OGS1
128 { 131 {
129 uint regX = Convert.ToUInt32(neighbourData["x"]); 132 uint regX = Convert.ToUInt32(neighbourData["x"]);
130 uint regY = Convert.ToUInt32(neighbourData["y"]); 133 uint regY = Convert.ToUInt32(neighbourData["y"]);
131 if ((regionInfo.RegionLocX != regX) || (regionInfo.RegionLocY != regY)) 134 if ((x != regX) || (y != regY))
132 { 135 {
136
133 string simIp = (string)neighbourData["sim_ip"]; 137 string simIp = (string)neighbourData["sim_ip"];
134 138
135 uint port = Convert.ToUInt32(neighbourData["sim_port"]); 139 int port = Convert.ToInt32(neighbourData["sim_port"]);
136 string externalUri = (string)neighbourData["sim_uri"]; 140 string externalUri = (string)neighbourData["sim_uri"];
137 141
138 string externalIpStr = OpenSim.Framework.Utilities.Util.GetHostFromDNS(simIp).ToString(); 142 string externalIpStr = OpenSim.Framework.Utilities.Util.GetHostFromDNS(simIp).ToString();
139 IPEndPoint neighbourInternalEndPoint = new IPEndPoint(IPAddress.Parse(externalIpStr), (int)port); 143 SimpleRegionInfo sri = new SimpleRegionInfo(regX, regY, simIp, port);
140 string neighbourExternalUri = externalUri; 144 sri.RemotingPort = Convert.ToUInt32(neighbourData["remoting_port"]);
141 RegionInfo neighbour = new RegionInfo(regX, regY, neighbourInternalEndPoint, externalIpStr); 145 sri.RegionID = new LLUUID((string)neighbourData["uuid"]);
142
143 //OGS1
144 //neighbour.RegionHandle = (ulong)n["regionhandle"]; is now calculated locally
145
146 neighbour.RegionName = (string)neighbourData["name"];
147 146
148 //OGS1+ 147 neighbours.Add(sri);
149 neighbour.SimUUID = new LLUUID((string)neighbourData["uuid"]);
150
151 neighbours.Add(neighbour);
152 } 148 }
153 } 149 }
154 } 150 }
@@ -199,7 +195,7 @@ namespace OpenSim.Region.Communications.OGS1
199 regionInfo.RemotingPort = Convert.ToUInt32((string)responseData["remoting_port"]); 195 regionInfo.RemotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
200 regionInfo.RemotingAddress = internalIpStr; 196 regionInfo.RemotingAddress = internalIpStr;
201 197
202 regionInfo.SimUUID = new LLUUID((string)responseData["region_UUID"]); 198 regionInfo.RegionID = new LLUUID((string)responseData["region_UUID"]);
203 regionInfo.RegionName = (string)responseData["region_name"]; 199 regionInfo.RegionName = (string)responseData["region_name"];
204 200
205 return regionInfo; 201 return regionInfo;
@@ -365,6 +361,7 @@ namespace OpenSim.Region.Communications.OGS1
365 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( 361 OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject(
366 typeof(OGS1InterRegionRemoting), 362 typeof(OGS1InterRegionRemoting),
367 "tcp://" + regInfo.RemotingAddress + ":" + regInfo.RemotingPort + "/InterRegions"); 363 "tcp://" + regInfo.RemotingAddress + ":" + regInfo.RemotingPort + "/InterRegions");
364
368 if (remObject != null) 365 if (remObject != null)
369 { 366 {
370 retValue = remObject.InformRegionOfChildAgent(regionHandle, agentData); 367 retValue = remObject.InformRegionOfChildAgent(regionHandle, agentData);
@@ -386,10 +383,27 @@ namespace OpenSim.Region.Communications.OGS1
386 MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); 383 MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString());
387 return false; 384 return false;
388 } 385 }
389 catch 386 catch (SocketException e)
387 {
388 MainLog.Instance.Error("Socket Error: Unable to connect to remote region.\n" + e.ToString());
389 return false;
390 }
391 catch (InvalidCredentialException e)
392 {
393 MainLog.Instance.Error("Invalid Credentials: Unable to connect to remote region.\n" + e.ToString());
394 return false;
395 }
396 catch (AuthenticationException e)
397 {
398 MainLog.Instance.Error("Authentication exception: Unable to connect to remote region.\n" + e.ToString());
399 return false;
400 }
401 catch (Exception e)
390 { 402 {
403 MainLog.Instance.Error("Unknown exception: Unable to connect to remote region.\n" + e.ToString());
391 return false; 404 return false;
392 } 405 }
406 return true;
393 } 407 }
394 408
395 /// <summary> 409 /// <summary>
diff --git a/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs b/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs
index bac0d59..e776717 100644
--- a/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs
+++ b/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs
@@ -47,9 +47,9 @@ namespace OpenSim.Region.Environment.Modules
47 47
48 public void Initialise(Scene scene) 48 public void Initialise(Scene scene)
49 { 49 {
50 if (!RegisteredScenes.ContainsKey(scene.RegionInfo.SimUUID)) 50 if (!RegisteredScenes.ContainsKey(scene.RegionInfo.RegionID))
51 { 51 {
52 RegisteredScenes.Add(scene.RegionInfo.SimUUID, scene); 52 RegisteredScenes.Add(scene.RegionInfo.RegionID, scene);
53 scene.RegisterModuleInterface<IDynamicTextureManager>(this); 53 scene.RegisterModuleInterface<IDynamicTextureManager>(this);
54 } 54 }
55 } 55 }
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index 567fbd9..ee515ea 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -403,7 +403,7 @@ namespace OpenSim.Region.Environment.Scenes
403 } 403 }
404 404
405 storageManager.DataStore.RemoveObject(((SceneObjectGroup) selectedEnt).UUID, 405 storageManager.DataStore.RemoveObject(((SceneObjectGroup) selectedEnt).UUID,
406 m_regInfo.SimUUID); 406 m_regInfo.RegionID);
407 ((SceneObjectGroup) selectedEnt).DeleteGroup(); 407 ((SceneObjectGroup) selectedEnt).DeleteGroup();
408 408
409 lock (Entities) 409 lock (Entities)
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index b0f0b9a..ab8a48a 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -26,6 +26,7 @@
26* 26*
27*/ 27*/
28using System; 28using System;
29using System.Net;
29using System.Collections.Generic; 30using System.Collections.Generic;
30using System.IO; 31using System.IO;
31using System.Threading; 32using System.Threading;
@@ -529,7 +530,7 @@ namespace OpenSim.Region.Environment.Scenes
529 public virtual void LoadPrimsFromStorage() 530 public virtual void LoadPrimsFromStorage()
530 { 531 {
531 MainLog.Instance.Verbose("Loading objects from datastore"); 532 MainLog.Instance.Verbose("Loading objects from datastore");
532 List<SceneObjectGroup> PrimsFromDB = storageManager.DataStore.LoadObjects(m_regInfo.SimUUID); 533 List<SceneObjectGroup> PrimsFromDB = storageManager.DataStore.LoadObjects(m_regInfo.RegionID);
533 foreach (SceneObjectGroup prim in PrimsFromDB) 534 foreach (SceneObjectGroup prim in PrimsFromDB)
534 { 535 {
535 AddEntityFromStorage(prim); 536 AddEntityFromStorage(prim);
@@ -964,7 +965,7 @@ namespace OpenSim.Region.Environment.Scenes
964 if (Entities.ContainsKey(entID)) 965 if (Entities.ContainsKey(entID))
965 { 966 {
966 Entities.Remove(entID); 967 Entities.Remove(entID);
967 storageManager.DataStore.RemoveObject(entID, m_regInfo.SimUUID); 968 storageManager.DataStore.RemoveObject(entID, m_regInfo.RegionID);
968 return true; 969 return true;
969 } 970 }
970 return false; 971 return false;
@@ -1062,13 +1063,32 @@ namespace OpenSim.Region.Environment.Scenes
1062 } 1063 }
1063 } 1064 }
1064 1065
1066 delegate void InformClientOfNeighbourDelegate(IClientAPI remoteClient, AgentCircuitData a, ulong regionHandle, IPEndPoint endPoint);
1067
1068 /// <summary>
1069 /// Async compnent for informing client of which neighbours exists
1070 /// </summary>
1071 /// <remarks>
1072 /// This needs to run asynchronesously, as a network timeout may block the thread for a long while
1073 /// </remarks>
1074 /// <param name="remoteClient"></param>
1075 /// <param name="a"></param>
1076 /// <param name="regionHandle"></param>
1077 /// <param name="endPoint"></param>
1078 public void InformClientOfNeighbourAsync(IClientAPI remoteClient, AgentCircuitData a, ulong regionHandle, IPEndPoint endPoint)
1079 {
1080 bool regionAccepted = commsManager.InterRegion.InformRegionOfChildAgent(regionHandle, a);
1081
1082 if (regionAccepted)
1083 remoteClient.InformClientOfNeighbour(regionHandle, endPoint);
1084 }
1085
1065 /// <summary> 1086 /// <summary>
1066 /// 1087 ///
1067 /// </summary> 1088 /// </summary>
1068 public void InformClientOfNeighbours(IClientAPI remoteClient) 1089 public void InformClientOfNeighbours(IClientAPI remoteClient)
1069 { 1090 {
1070 List<RegionInfo> neighbours = commsManager.GridService.RequestNeighbours(m_regInfo); 1091 List<SimpleRegionInfo> neighbours = commsManager.GridService.RequestNeighbours(m_regInfo.RegionLocX, m_regInfo.RegionLocY);
1071
1072 if (neighbours != null) 1092 if (neighbours != null)
1073 { 1093 {
1074 for (int i = 0; i < neighbours.Count; i++) 1094 for (int i = 0; i < neighbours.Count; i++)
@@ -1078,8 +1098,9 @@ namespace OpenSim.Region.Environment.Scenes
1078 agent.InventoryFolder = LLUUID.Zero; 1098 agent.InventoryFolder = LLUUID.Zero;
1079 agent.startpos = new LLVector3(128, 128, 70); 1099 agent.startpos = new LLVector3(128, 128, 70);
1080 agent.child = true; 1100 agent.child = true;
1081 commsManager.InterRegion.InformRegionOfChildAgent(neighbours[i].RegionHandle, agent); 1101
1082 remoteClient.InformClientOfNeighbour(neighbours[i].RegionHandle, neighbours[i].ExternalEndPoint); 1102 InformClientOfNeighbourDelegate d = new InformClientOfNeighbourDelegate(InformClientOfNeighbourAsync);
1103 IAsyncResult asyncInform = d.BeginInvoke(remoteClient, agent, neighbours[i].RegionHandle, neighbours[i].ExternalEndPoint, null, null);
1083 //this.capsHandlers[remoteClient.AgentId].CreateEstablishAgentComms("", System.Net.IPAddress.Parse(neighbours[i].CommsIPListenAddr) + ":" + neighbours[i].CommsIPListenPort); 1104 //this.capsHandlers[remoteClient.AgentId].CreateEstablishAgentComms("", System.Net.IPAddress.Parse(neighbours[i].CommsIPListenAddr) + ":" + neighbours[i].CommsIPListenPort);
1084 } 1105 }
1085 } 1106 }
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index 9f8ea0c..21edbac 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -197,7 +197,7 @@ namespace OpenSim.Region.Environment.Scenes
197 { 197 {
198 if (m_scene != null) 198 if (m_scene != null)
199 { 199 {
200 return m_scene.RegionInfo.SimUUID; 200 return m_scene.RegionInfo.RegionID;
201 } 201 }
202 return LLUUID.Zero; 202 return LLUUID.Zero;
203 } 203 }
@@ -1173,7 +1173,7 @@ namespace OpenSim.Region.Environment.Scenes
1173 { 1173 {
1174 if (HasChanged) 1174 if (HasChanged)
1175 { 1175 {
1176 datastore.StoreObject(this, m_scene.RegionInfo.SimUUID); 1176 datastore.StoreObject(this, m_scene.RegionInfo.RegionID);
1177 HasChanged = false; 1177 HasChanged = false;
1178 } 1178 }
1179 } 1179 }
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 22a0754..2f5829a 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -770,7 +770,7 @@ namespace OpenSim.Region.Environment.Scenes
770 770
771 protected void CheckForSignificantMovement() 771 protected void CheckForSignificantMovement()
772 { 772 {
773 if (Helpers.VecDist(AbsolutePosition, posLastSignificantMove) > 2.0) 773 if (AbsolutePosition.GetDistanceTo(posLastSignificantMove) > 2.0)
774 { 774 {
775 posLastSignificantMove = AbsolutePosition; 775 posLastSignificantMove = AbsolutePosition;
776 if (OnSignificantClientMovement != null) 776 if (OnSignificantClientMovement != null)
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
index 05811e2..4388b31 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
@@ -1221,7 +1221,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
1221 if (dynamicID == "") 1221 if (dynamicID == "")
1222 { 1222 {
1223 IDynamicTextureManager textureManager = this.World.RequestModuleInterface<IDynamicTextureManager>(); 1223 IDynamicTextureManager textureManager = this.World.RequestModuleInterface<IDynamicTextureManager>();
1224 LLUUID createdTexture = textureManager.AddDynamicTextureURL(World.RegionInfo.SimUUID, this.m_host.UUID, contentType, url, extraParams, timer); 1224 LLUUID createdTexture = textureManager.AddDynamicTextureURL(World.RegionInfo.RegionID, this.m_host.UUID, contentType, url, extraParams, timer);
1225 return createdTexture.ToStringHyphenated(); 1225 return createdTexture.ToStringHyphenated();
1226 } 1226 }
1227 else 1227 else