diff options
8 files changed, 56 insertions, 45 deletions
diff --git a/OpenSim/Framework/Capabilities/CapsUtil.cs b/OpenSim/Framework/Capabilities/CapsUtil.cs index 0334e4b..faf2708 100644 --- a/OpenSim/Framework/Capabilities/CapsUtil.cs +++ b/OpenSim/Framework/Capabilities/CapsUtil.cs | |||
@@ -41,7 +41,7 @@ namespace OpenSim.Framework.Capabilities | |||
41 | /// <returns></returns> | 41 | /// <returns></returns> |
42 | public static string GetCapsSeedPath(string capsObjectPath) | 42 | public static string GetCapsSeedPath(string capsObjectPath) |
43 | { | 43 | { |
44 | return "/CAPS/" + capsObjectPath + "0000/"; | 44 | return "CAPS/" + capsObjectPath + "0000/"; |
45 | } | 45 | } |
46 | 46 | ||
47 | /// <summary> | 47 | /// <summary> |
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index 949a289..73b8bd0 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs | |||
@@ -115,7 +115,13 @@ namespace OpenSim.Framework | |||
115 | /// </summary> | 115 | /// </summary> |
116 | public string ServerURI | 116 | public string ServerURI |
117 | { | 117 | { |
118 | get { return m_serverURI; } | 118 | get { |
119 | if ( m_serverURI != string.Empty ) { | ||
120 | return m_serverURI; | ||
121 | } else { | ||
122 | return "http://" + m_externalHostName + ":" + m_httpPort + "/"; | ||
123 | } | ||
124 | } | ||
119 | set { | 125 | set { |
120 | if ( value.EndsWith("/") ) { | 126 | if ( value.EndsWith("/") ) { |
121 | m_serverURI = value; | 127 | m_serverURI = value; |
@@ -147,6 +153,7 @@ namespace OpenSim.Framework | |||
147 | 153 | ||
148 | public SimpleRegionInfo() | 154 | public SimpleRegionInfo() |
149 | { | 155 | { |
156 | m_serverURI = string.Empty; | ||
150 | } | 157 | } |
151 | 158 | ||
152 | public SimpleRegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) | 159 | public SimpleRegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) |
@@ -156,6 +163,7 @@ namespace OpenSim.Framework | |||
156 | 163 | ||
157 | m_internalEndPoint = internalEndPoint; | 164 | m_internalEndPoint = internalEndPoint; |
158 | m_externalHostName = externalUri; | 165 | m_externalHostName = externalUri; |
166 | m_serverURI = string.Empty; | ||
159 | } | 167 | } |
160 | 168 | ||
161 | public SimpleRegionInfo(uint regionLocX, uint regionLocY, string externalUri, uint port) | 169 | public SimpleRegionInfo(uint regionLocX, uint regionLocY, string externalUri, uint port) |
@@ -166,6 +174,7 @@ namespace OpenSim.Framework | |||
166 | m_externalHostName = externalUri; | 174 | m_externalHostName = externalUri; |
167 | 175 | ||
168 | m_internalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), (int) port); | 176 | m_internalEndPoint = new IPEndPoint(IPAddress.Parse("0.0.0.0"), (int) port); |
177 | m_serverURI = string.Empty; | ||
169 | } | 178 | } |
170 | 179 | ||
171 | public SimpleRegionInfo(RegionInfo ConvertFrom) | 180 | public SimpleRegionInfo(RegionInfo ConvertFrom) |
@@ -455,6 +464,7 @@ namespace OpenSim.Framework | |||
455 | configMember = | 464 | configMember = |
456 | new ConfigurationMember(xmlNode, description, loadConfigurationOptions, handleIncomingConfiguration, !skipConsoleConfig); | 465 | new ConfigurationMember(xmlNode, description, loadConfigurationOptions, handleIncomingConfiguration, !skipConsoleConfig); |
457 | configMember.performConfigurationRetrieve(); | 466 | configMember.performConfigurationRetrieve(); |
467 | m_serverURI = string.Empty; | ||
458 | } | 468 | } |
459 | 469 | ||
460 | public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) | 470 | public RegionInfo(uint regionLocX, uint regionLocY, IPEndPoint internalEndPoint, string externalUri) |
@@ -464,10 +474,12 @@ namespace OpenSim.Framework | |||
464 | 474 | ||
465 | m_internalEndPoint = internalEndPoint; | 475 | m_internalEndPoint = internalEndPoint; |
466 | m_externalHostName = externalUri; | 476 | m_externalHostName = externalUri; |
477 | m_serverURI = string.Empty; | ||
467 | } | 478 | } |
468 | 479 | ||
469 | public RegionInfo() | 480 | public RegionInfo() |
470 | { | 481 | { |
482 | m_serverURI = string.Empty; | ||
471 | } | 483 | } |
472 | 484 | ||
473 | public EstateSettings EstateSettings | 485 | public EstateSettings EstateSettings |
@@ -557,10 +569,23 @@ namespace OpenSim.Framework | |||
557 | /// <summary> | 569 | /// <summary> |
558 | /// A well-formed URI for the host region server (namely "http://" + ExternalHostName) | 570 | /// A well-formed URI for the host region server (namely "http://" + ExternalHostName) |
559 | /// </summary> | 571 | /// </summary> |
572 | |||
560 | public string ServerURI | 573 | public string ServerURI |
561 | { | 574 | { |
562 | get { return m_serverURI; } | 575 | get { |
563 | set { m_serverURI = value; } | 576 | if ( m_serverURI != string.Empty ) { |
577 | return m_serverURI; | ||
578 | } else { | ||
579 | return "http://" + m_externalHostName + ":" + m_httpPort + "/"; | ||
580 | } | ||
581 | } | ||
582 | set { | ||
583 | if ( value.EndsWith("/") ) { | ||
584 | m_serverURI = value; | ||
585 | } else { | ||
586 | m_serverURI = value + '/'; | ||
587 | } | ||
588 | } | ||
564 | } | 589 | } |
565 | 590 | ||
566 | public string RegionName | 591 | public string RegionName |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 3791e1d..54cc80f 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -327,34 +327,21 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
327 | 327 | ||
328 | // OK, it got this agent. Let's close some child agents | 328 | // OK, it got this agent. Let's close some child agents |
329 | sp.CloseChildAgents(newRegionX, newRegionY); | 329 | sp.CloseChildAgents(newRegionX, newRegionY); |
330 | 330 | IClientIPEndpoint ipepClient; | |
331 | if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY)) | 331 | if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY)) |
332 | { | 332 | { |
333 | //sp.ControllingClient.SendTeleportProgress(teleportFlags, "Creating agent..."); | 333 | //sp.ControllingClient.SendTeleportProgress(teleportFlags, "Creating agent..."); |
334 | |||
335 | #region IP Translation for NAT | 334 | #region IP Translation for NAT |
336 | IClientIPEndpoint ipepClient; | 335 | // Uses ipepClient above |
337 | if (sp.ClientView.TryGet(out ipepClient)) | 336 | if (sp.ClientView.TryGet(out ipepClient)) |
338 | { | 337 | { |
339 | capsPath | 338 | endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address); |
340 | = finalDestination.ServerURI + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath); | ||
341 | } | ||
342 | else | ||
343 | { | ||
344 | capsPath = finalDestination.ServerURI + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath); | ||
345 | } | 339 | } |
346 | #endregion | 340 | #endregion |
341 | capsPath = finalDestination.ServerURI + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath); | ||
347 | 342 | ||
348 | if (eq != null) | 343 | if (eq != null) |
349 | { | 344 | { |
350 | #region IP Translation for NAT | ||
351 | // Uses ipepClient above | ||
352 | if (sp.ClientView.TryGet(out ipepClient)) | ||
353 | { | ||
354 | endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address); | ||
355 | } | ||
356 | #endregion | ||
357 | |||
358 | eq.EnableSimulator(destinationHandle, endPoint, sp.UUID); | 345 | eq.EnableSimulator(destinationHandle, endPoint, sp.UUID); |
359 | 346 | ||
360 | // ES makes the client send a UseCircuitCode message to the destination, | 347 | // ES makes the client send a UseCircuitCode message to the destination, |
@@ -373,7 +360,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
373 | else | 360 | else |
374 | { | 361 | { |
375 | agentCircuit.CapsPath = sp.Scene.CapsModule.GetChildSeed(sp.UUID, reg.RegionHandle); | 362 | agentCircuit.CapsPath = sp.Scene.CapsModule.GetChildSeed(sp.UUID, reg.RegionHandle); |
376 | capsPath = finalDestination.ServerURI + "/CAPS/" + agentCircuit.CapsPath + "0000/"; | 363 | capsPath = finalDestination.ServerURI + CapsUtil.GetCapsSeedPath(agentCircuit.CapsPath); |
377 | } | 364 | } |
378 | 365 | ||
379 | // Expect avatar crossing is a heavy-duty function at the destination. | 366 | // Expect avatar crossing is a heavy-duty function at the destination. |
@@ -506,7 +493,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
506 | 493 | ||
507 | protected virtual void SetCallbackURL(AgentData agent, RegionInfo region) | 494 | protected virtual void SetCallbackURL(AgentData agent, RegionInfo region) |
508 | { | 495 | { |
509 | agent.CallbackURI = region.ServerURI + "/agent/" + agent.AgentID.ToString() + "/" + region.RegionID.ToString() + "/release/"; | 496 | agent.CallbackURI = region.ServerURI + "agent/" + agent.AgentID.ToString() + "/" + region.RegionID.ToString() + "/release/"; |
497 | m_log.Debug("Set callback URL to " + agent.CallbackURI); | ||
510 | 498 | ||
511 | } | 499 | } |
512 | 500 | ||
@@ -832,7 +820,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
832 | if (isFlying) | 820 | if (isFlying) |
833 | cAgent.ControlFlags |= (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY; | 821 | cAgent.ControlFlags |= (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY; |
834 | cAgent.CallbackURI = m_scene.RegionInfo.ServerURI + | 822 | cAgent.CallbackURI = m_scene.RegionInfo.ServerURI + |
835 | "/agent/" + agent.UUID.ToString() + "/" + m_scene.RegionInfo.RegionID.ToString() + "/release/"; | 823 | "agent/" + agent.UUID.ToString() + "/" + m_scene.RegionInfo.RegionID.ToString() + "/release/"; |
836 | 824 | ||
837 | if (!m_scene.SimulationService.UpdateAgent(neighbourRegion, cAgent)) | 825 | if (!m_scene.SimulationService.UpdateAgent(neighbourRegion, cAgent)) |
838 | { | 826 | { |
@@ -857,9 +845,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
857 | neighbourRegion.RegionHandle); | 845 | neighbourRegion.RegionHandle); |
858 | return agent; | 846 | return agent; |
859 | } | 847 | } |
860 | // TODO Should construct this behind a method | 848 | string capsPath = neighbourRegion.ServerURI + CapsUtil.GetCapsSeedPath(agentcaps); |
861 | string capsPath = | ||
862 | neighbourRegion.ServerURI + "/CAPS/" + agentcaps /*circuitdata.CapsPath*/ + "0000/"; | ||
863 | 849 | ||
864 | m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} to client {1}", capsPath, agent.UUID); | 850 | m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Sending new CAPS seed url {0} to client {1}", capsPath, agent.UUID); |
865 | 851 | ||
@@ -1178,7 +1164,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1178 | y = y / Constants.RegionSize; | 1164 | y = y / Constants.RegionSize; |
1179 | m_log.Info("[ENTITY TRANSFER MODULE]: Starting to inform client about neighbour " + x + ", " + y + "(" + endPoint.ToString() + ")"); | 1165 | m_log.Info("[ENTITY TRANSFER MODULE]: Starting to inform client about neighbour " + x + ", " + y + "(" + endPoint.ToString() + ")"); |
1180 | 1166 | ||
1181 | string capsPath = reg.ServerURI + "/CAPS/" + a.CapsPath + "0000/"; | 1167 | string capsPath = reg.ServerURI + CapsUtil.GetCapsSeedPath(a.CapsPath); |
1182 | 1168 | ||
1183 | string reason = String.Empty; | 1169 | string reason = String.Empty; |
1184 | 1170 | ||
diff --git a/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs b/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs index fd0e879..2dd7767 100644 --- a/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs +++ b/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs | |||
@@ -595,12 +595,12 @@ namespace OpenSim.Region.CoreModules.InterGrid | |||
595 | // DEPRECATED | 595 | // DEPRECATED |
596 | responseMap["seed_capability"] | 596 | responseMap["seed_capability"] |
597 | = OSD.FromString( | 597 | = OSD.FromString( |
598 | regionCapsHttpProtocol + httpaddr + ":" + reg.HttpPort + CapsUtil.GetCapsSeedPath(userCap.CapsObjectPath)); | 598 | regionCapsHttpProtocol + httpaddr + ":" + reg.HttpPort + "/" + CapsUtil.GetCapsSeedPath(userCap.CapsObjectPath)); |
599 | 599 | ||
600 | // REPLACEMENT | 600 | // REPLACEMENT |
601 | responseMap["region_seed_capability"] | 601 | responseMap["region_seed_capability"] |
602 | = OSD.FromString( | 602 | = OSD.FromString( |
603 | regionCapsHttpProtocol + httpaddr + ":" + reg.HttpPort + CapsUtil.GetCapsSeedPath(userCap.CapsObjectPath)); | 603 | regionCapsHttpProtocol + httpaddr + ":" + reg.HttpPort + "/" + CapsUtil.GetCapsSeedPath(userCap.CapsObjectPath)); |
604 | 604 | ||
605 | responseMap["rez_avatar"] = OSD.FromString(rezHttpProtocol + httpaddr + ":" + urlport + rezAvatarPath); | 605 | responseMap["rez_avatar"] = OSD.FromString(rezHttpProtocol + httpaddr + ":" + urlport + rezAvatarPath); |
606 | responseMap["rez_avatar/rez"] = OSD.FromString(rezHttpProtocol + httpaddr + ":" + urlport + rezAvatarPath); | 606 | responseMap["rez_avatar/rez"] = OSD.FromString(rezHttpProtocol + httpaddr + ":" + urlport + rezAvatarPath); |
diff --git a/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs index f64a079..a1bcba6 100644 --- a/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs +++ b/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs | |||
@@ -124,6 +124,7 @@ namespace OpenSim.Server.Handlers.Hypergrid | |||
124 | UUID uuid = UUID.Zero; | 124 | UUID uuid = UUID.Zero; |
125 | string regionname = string.Empty; | 125 | string regionname = string.Empty; |
126 | string gatekeeper_host = string.Empty; | 126 | string gatekeeper_host = string.Empty; |
127 | string server_uri = string.Empty; | ||
127 | int gatekeeper_port = 0; | 128 | int gatekeeper_port = 0; |
128 | IPEndPoint client_ipaddress = null; | 129 | IPEndPoint client_ipaddress = null; |
129 | 130 | ||
@@ -173,6 +174,7 @@ namespace OpenSim.Server.Handlers.Hypergrid | |||
173 | destination.RegionLocX = x; | 174 | destination.RegionLocX = x; |
174 | destination.RegionLocY = y; | 175 | destination.RegionLocY = y; |
175 | destination.RegionName = regionname; | 176 | destination.RegionName = regionname; |
177 | |||
176 | 178 | ||
177 | AgentCircuitData aCircuit = new AgentCircuitData(); | 179 | AgentCircuitData aCircuit = new AgentCircuitData(); |
178 | try | 180 | try |
diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs index 11df7e0..74e864b 100644 --- a/OpenSim/Services/GridService/HypergridLinker.cs +++ b/OpenSim/Services/GridService/HypergridLinker.cs | |||
@@ -198,21 +198,8 @@ namespace OpenSim.Services.GridService | |||
198 | 198 | ||
199 | return null; | 199 | return null; |
200 | } | 200 | } |
201 | |||
202 | public bool TryCreateLink(UUID scopeID, int xloc, int yloc, string externalRegionName, string serverURI, out GridRegion regInfo, out string reason) | ||
203 | { | ||
204 | return TryCreateLink(scopeID, xloc, yloc, externalRegionName, 0, null, serverURI, out regInfo, out reason); | ||
205 | } | ||
206 | |||
207 | public bool TryCreateLink(UUID scopeID, int xloc, int yloc, string externalRegionName, uint externalPort, string externalHostName, out GridRegion regInfo, out string reason) | 201 | public bool TryCreateLink(UUID scopeID, int xloc, int yloc, string externalRegionName, uint externalPort, string externalHostName, out GridRegion regInfo, out string reason) |
208 | { | 202 | { |
209 | return TryCreateLink(scopeID, xloc, yloc, externalRegionName, externalPort, externalHostName, null, out regInfo, out reason); | ||
210 | } | ||
211 | |||
212 | // From the command line and the 2 above | ||
213 | public bool TryCreateLink(UUID scopeID, int xloc, int yloc, | ||
214 | string externalRegionName, uint externalPort, string externalHostName, string serverURI, out GridRegion regInfo, out string reason) | ||
215 | { | ||
216 | m_log.DebugFormat("[HYPERGRID LINKER]: Link to {0}:{1}:{2}, in {3}-{4}", externalHostName, externalPort, externalRegionName, xloc, yloc); | 203 | m_log.DebugFormat("[HYPERGRID LINKER]: Link to {0}:{1}:{2}, in {3}-{4}", externalHostName, externalPort, externalRegionName, xloc, yloc); |
217 | 204 | ||
218 | reason = string.Empty; | 205 | reason = string.Empty; |
@@ -226,8 +213,11 @@ namespace OpenSim.Services.GridService | |||
226 | 213 | ||
227 | // Big HACK for Simian Grid !!! | 214 | // Big HACK for Simian Grid !!! |
228 | // We need to clean up all URLs used in OpenSim !!! | 215 | // We need to clean up all URLs used in OpenSim !!! |
229 | if (externalHostName.Contains("/")) | 216 | if (externalHostName.Contains("/")) { |
230 | regInfo.ServerURI = externalHostName; | 217 | regInfo.ServerURI = externalHostName; |
218 | } else { | ||
219 | regInfo.ServerURI = "http://" + externalHostName + ":" + externalPort.ToString(); | ||
220 | } | ||
231 | 221 | ||
232 | try | 222 | try |
233 | { | 223 | { |
diff --git a/OpenSim/Services/HypergridService/UserAgentService.cs b/OpenSim/Services/HypergridService/UserAgentService.cs index d5dda11..aed2dc8 100644 --- a/OpenSim/Services/HypergridService/UserAgentService.cs +++ b/OpenSim/Services/HypergridService/UserAgentService.cs | |||
@@ -136,6 +136,7 @@ namespace OpenSim.Services.HypergridService | |||
136 | m_log.DebugFormat("[USER AGENT SERVICE]: Request to login user {0} {1} (@{2}) to grid {3}", | 136 | m_log.DebugFormat("[USER AGENT SERVICE]: Request to login user {0} {1} (@{2}) to grid {3}", |
137 | agentCircuit.firstname, agentCircuit.lastname, ((clientIP == null) ? "stored IP" : clientIP.Address.ToString()), | 137 | agentCircuit.firstname, agentCircuit.lastname, ((clientIP == null) ? "stored IP" : clientIP.Address.ToString()), |
138 | gatekeeper.ExternalHostName +":"+ gatekeeper.HttpPort); | 138 | gatekeeper.ExternalHostName +":"+ gatekeeper.HttpPort); |
139 | m_log.Debug("gatekeeper serveruri -> " + gatekeeper.ServerURI ); | ||
139 | 140 | ||
140 | // Take the IP address + port of the gatekeeper (reg) plus the info of finalDestination | 141 | // Take the IP address + port of the gatekeeper (reg) plus the info of finalDestination |
141 | GridRegion region = new GridRegion(gatekeeper); | 142 | GridRegion region = new GridRegion(gatekeeper); |
diff --git a/OpenSim/Services/Interfaces/IGridService.cs b/OpenSim/Services/Interfaces/IGridService.cs index bf441e6..6d3bff7 100644 --- a/OpenSim/Services/Interfaces/IGridService.cs +++ b/OpenSim/Services/Interfaces/IGridService.cs | |||
@@ -115,7 +115,13 @@ namespace OpenSim.Services.Interfaces | |||
115 | /// </summary> | 115 | /// </summary> |
116 | public string ServerURI | 116 | public string ServerURI |
117 | { | 117 | { |
118 | get { return m_serverURI; } | 118 | get { |
119 | if ( m_serverURI != string.Empty ) { | ||
120 | return m_serverURI; | ||
121 | } else { | ||
122 | return "http://" + m_externalHostName + ":" + m_httpPort + "/"; | ||
123 | } | ||
124 | } | ||
119 | set { | 125 | set { |
120 | if ( value.EndsWith("/") ) { | 126 | if ( value.EndsWith("/") ) { |
121 | m_serverURI = value; | 127 | m_serverURI = value; |
@@ -170,6 +176,7 @@ namespace OpenSim.Services.Interfaces | |||
170 | 176 | ||
171 | public GridRegion() | 177 | public GridRegion() |
172 | { | 178 | { |
179 | m_serverURI = string.Empty; | ||
173 | } | 180 | } |
174 | 181 | ||
175 | public GridRegion(int regionLocX, int regionLocY, IPEndPoint internalEndPoint, string externalUri) | 182 | public GridRegion(int regionLocX, int regionLocY, IPEndPoint internalEndPoint, string externalUri) |