aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services')
-rw-r--r--OpenSim/Services/GridService/HypergridLinker.cs80
1 files changed, 42 insertions, 38 deletions
diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs
index 16fcc65..588c1dd 100644
--- a/OpenSim/Services/GridService/HypergridLinker.cs
+++ b/OpenSim/Services/GridService/HypergridLinker.cs
@@ -162,6 +162,7 @@ namespace OpenSim.Services.GridService
162 162
163 #region Link Region 163 #region Link Region
164 164
165 // from map search
165 public GridRegion LinkRegion(UUID scopeID, string regionDescriptor) 166 public GridRegion LinkRegion(UUID scopeID, string regionDescriptor)
166 { 167 {
167 string reason = string.Empty; 168 string reason = string.Empty;
@@ -171,7 +172,7 @@ namespace OpenSim.Services.GridService
171 172
172 private static Random random = new Random(); 173 private static Random random = new Random();
173 174
174 // From the command line link-region 175 // From the command line link-region (obsolete) and the map
175 public GridRegion TryLinkRegionToCoords(UUID scopeID, string mapName, int xloc, int yloc, out string reason) 176 public GridRegion TryLinkRegionToCoords(UUID scopeID, string mapName, int xloc, int yloc, out string reason)
176 { 177 {
177 return TryLinkRegionToCoords(scopeID, mapName, xloc, yloc, UUID.Zero, out reason); 178 return TryLinkRegionToCoords(scopeID, mapName, xloc, yloc, UUID.Zero, out reason);
@@ -180,45 +181,48 @@ namespace OpenSim.Services.GridService
180 public GridRegion TryLinkRegionToCoords(UUID scopeID, string mapName, int xloc, int yloc, UUID ownerID, out string reason) 181 public GridRegion TryLinkRegionToCoords(UUID scopeID, string mapName, int xloc, int yloc, UUID ownerID, out string reason)
181 { 182 {
182 reason = string.Empty; 183 reason = string.Empty;
183 string host = "127.0.0.1"; 184 GridRegion regInfo = null;
184 string portstr; 185
185 string regionName = ""; 186 if (!mapName.StartsWith("http"))
186 uint port = 0;
187 string[] parts = mapName.Split(new char[] { ':' });
188 if (parts.Length >= 1)
189 {
190 host = parts[0];
191 }
192 if (parts.Length >= 2)
193 {
194 portstr = parts[1];
195 //m_log.Debug("-- port = " + portstr);
196 if (!UInt32.TryParse(portstr, out port))
197 regionName = parts[1];
198 }
199 // always take the last one
200 if (parts.Length >= 3)
201 { 187 {
202 regionName = parts[2]; 188 string host = "127.0.0.1";
203 } 189 string portstr;
190 string regionName = "";
191 uint port = 0;
192 string[] parts = mapName.Split(new char[] { ':' });
193 if (parts.Length >= 1)
194 {
195 host = parts[0];
196 }
197 if (parts.Length >= 2)
198 {
199 portstr = parts[1];
200 //m_log.Debug("-- port = " + portstr);
201 if (!UInt32.TryParse(portstr, out port))
202 regionName = parts[1];
203 }
204 // always take the last one
205 if (parts.Length >= 3)
206 {
207 regionName = parts[2];
208 }
204 209
205 //// Sanity check.
206 //try
207 //{
208 // Util.GetHostFromDNS(host);
209 //}
210 //catch
211 //{
212 // reason = "Malformed hostname";
213 // return null;
214 //}
215 210
216 GridRegion regInfo; 211 bool success = TryCreateLink(scopeID, xloc, yloc, regionName, port, host, ownerID, out regInfo, out reason);
217 bool success = TryCreateLink(scopeID, xloc, yloc, regionName, port, host, ownerID, out regInfo, out reason); 212 if (success)
218 if (success) 213 {
214 regInfo.RegionName = mapName;
215 return regInfo;
216 }
217 }
218 else
219 { 219 {
220 regInfo.RegionName = mapName; 220 string[] parts = mapName.Split(new char[] {' '});
221 return regInfo; 221 string regionName = String.Empty;
222 if (parts.Length > 1)
223 regionName = parts[1];
224 if (TryCreateLink(scopeID, xloc, yloc, regionName, 0, null, parts[0], ownerID, out regInfo, out reason))
225 return regInfo;
222 } 226 }
223 227
224 return null; 228 return null;
@@ -231,7 +235,7 @@ namespace OpenSim.Services.GridService
231 235
232 public bool TryCreateLink(UUID scopeID, int xloc, int yloc, string remoteRegionName, uint externalPort, string externalHostName, string serverURI, UUID ownerID, out GridRegion regInfo, out string reason) 236 public bool TryCreateLink(UUID scopeID, int xloc, int yloc, string remoteRegionName, uint externalPort, string externalHostName, string serverURI, UUID ownerID, out GridRegion regInfo, out string reason)
233 { 237 {
234 m_log.DebugFormat("[HYPERGRID LINKER]: Link to {0}:{1}, in {2}-{3}", 238 m_log.DebugFormat("[HYPERGRID LINKER]: Link to {0} {1}, in {2}-{3}",
235 ((serverURI == null) ? (externalHostName + ":" + externalPort) : serverURI), 239 ((serverURI == null) ? (externalHostName + ":" + externalPort) : serverURI),
236 remoteRegionName, xloc / Constants.RegionSize, yloc / Constants.RegionSize); 240 remoteRegionName, xloc / Constants.RegionSize, yloc / Constants.RegionSize);
237 241
@@ -324,7 +328,7 @@ namespace OpenSim.Services.GridService
324 regInfo.TerrainImage = m_GatekeeperConnector.GetMapImage(regionID, imageURL, m_MapTileDirectory); 328 regInfo.TerrainImage = m_GatekeeperConnector.GetMapImage(regionID, imageURL, m_MapTileDirectory);
325 329
326 AddHyperlinkRegion(regInfo, handle); 330 AddHyperlinkRegion(regInfo, handle);
327 m_log.InfoFormat("[HYPERGRID LINKER]: Successfully linked to region_uuid {0} with image {1}", regInfo.RegionID, regInfo.TerrainImage); 331 m_log.InfoFormat("[HYPERGRID LINKER]: Successfully linked to region {0} with image {1}", regInfo.RegionName, regInfo.TerrainImage);
328 return true; 332 return true;
329 } 333 }
330 334