aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Services/GridService/HypergridLinker.cs32
1 files changed, 21 insertions, 11 deletions
diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs
index 1cc75c1..bf52660 100644
--- a/OpenSim/Services/GridService/HypergridLinker.cs
+++ b/OpenSim/Services/GridService/HypergridLinker.cs
@@ -200,10 +200,13 @@ namespace OpenSim.Services.GridService
200 reason = string.Empty; 200 reason = string.Empty;
201 GridRegion regInfo = null; 201 GridRegion regInfo = null;
202 202
203 mapName = mapName.Trim();
204
203 if (!mapName.StartsWith("http")) 205 if (!mapName.StartsWith("http"))
204 { 206 {
205 // Formats: grid.example.com:8002:region name 207 // Formats: grid.example.com:8002:region name
206 // grid.example.com:region name 208 // grid.example.com:region name
209 // grid.example.com:8002
207 // grid.example.com 210 // grid.example.com
208 211
209 string host; 212 string host;
@@ -222,11 +225,11 @@ namespace OpenSim.Services.GridService
222 225
223 if (parts.Length >= 2) 226 if (parts.Length >= 2)
224 { 227 {
225 string portstr = parts[1]; 228 // If it's a number then assume it's a port. Otherwise, it's a region name.
226 //m_log.Debug("-- port = " + portstr); 229 if (!UInt32.TryParse(parts[1], out port))
227 if (!UInt32.TryParse(portstr, out port))
228 regionName = parts[1]; 230 regionName = parts[1];
229 } 231 }
232
230 // always take the last one 233 // always take the last one
231 if (parts.Length >= 3) 234 if (parts.Length >= 3)
232 { 235 {
@@ -245,21 +248,28 @@ namespace OpenSim.Services.GridService
245 { 248 {
246 // Formats: http://grid.example.com region name 249 // Formats: http://grid.example.com region name
247 // http://grid.example.com "region name" 250 // http://grid.example.com "region name"
248 251 // http://grid.example.com
249 string regionName; 252
253 string serverURI;
254 string regionName = "";
250 255
251 string[] parts = mapName.Split(new char[] { ' ' }); 256 string[] parts = mapName.Split(new char[] { ' ' });
252 257
253 if (parts.Length < 2) 258 if (parts.Length == 0)
254 { 259 {
255 reason = "Wrong format for link-region"; 260 reason = "Wrong format for link-region";
256 return null; 261 return null;
257 } 262 }
258 263
259 regionName = mapName.Substring(parts[0].Length + 1); 264 serverURI = parts[0];
260 regionName = regionName.Trim(new char[] {'"'}); 265
261 266 if (parts.Length >= 2)
262 if (TryCreateLink(scopeID, xloc, yloc, regionName, 0, null, parts[0], ownerID, out regInfo, out reason)) 267 {
268 regionName = mapName.Substring(serverURI.Length);
269 regionName = regionName.Trim(new char[] { '"', ' ' });
270 }
271
272 if (TryCreateLink(scopeID, xloc, yloc, regionName, 0, null, serverURI, ownerID, out regInfo, out reason))
263 { 273 {
264 regInfo.RegionName = mapName; 274 regInfo.RegionName = mapName;
265 return regInfo; 275 return regInfo;