From 3b1b3ac9bbd77796a55bcc75d08f78bff5ca78af Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Sat, 23 May 2009 05:44:18 +0000 Subject: * Breaks OpenSim.. err I mean.. adds NAT translation support to EnableSimulator EventQueue methods. * NB: This may actually break logins on certain regions. Shake well before consuming. --- .../Framework/Scenes/SceneCommunicationService.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs') diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index 0699552..85a3d96 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs @@ -34,6 +34,7 @@ using OpenMetaverse; using OpenMetaverse.StructuredData; using log4net; using OpenSim.Framework; +using OpenSim.Framework.Client; using OpenSim.Framework.Communications; using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Capabilities; @@ -306,6 +307,14 @@ namespace OpenSim.Region.Framework.Scenes IEventQueue eq = avatar.Scene.RequestModuleInterface(); if (eq != null) { + #region IP Translation for NAT + IClientIPEndpoint ipepClient; + if(avatar.ClientView.TryGet(out ipepClient)) + { + endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address); + } + #endregion + eq.EnableSimulator(reg.RegionHandle, endPoint, avatar.UUID); eq.EstablishAgentCommunication(avatar.UUID, endPoint, capsPath); m_log.DebugFormat("[CAPS]: Sending new CAPS seed url {0} to client {1} in region {2}", @@ -812,6 +821,14 @@ namespace OpenSim.Region.Framework.Scenes if (eq != null) { + #region IP Translation for NAT + IClientIPEndpoint ipepClient; + if (avatar.ClientView.TryGet(out ipepClient)) + { + endPoint.Address = NetworkUtil.GetIPFor(ipepClient.EndPoint, endPoint.Address); + } + #endregion + eq.EnableSimulator(reg.RegionHandle, endPoint, avatar.UUID); // ES makes the client send a UseCircuitCode message to the destination, -- cgit v1.1