Log in | Register new account
Home » Projects » realXtend Modules » Tracker » Bugs » Edit Tracker Item
in this report, for reference, I will refer to my internal-IP as 192.168.1.100 (router-assigned IP) and the external-IP as the IP I get when I go to a "what is my ip?" service. (1) If all Http settings (the authentication, avatar storage and region (default) xml files) are set consistently to external-IP, where the URI is needed, opensim.exe crashes at about the point just after the point where port 7000 (UDP) is being opened. Authentication works fine. (2) If the only change to (1) is setting external_host_name to my internal-IP in the default.xml file in regions/, then opensim.exe finishes successfully, and I can log into my single region; however, I am unable to log into this region from another computer (ie.. from 192.168.1.102, a laptop behind the same router, for example). For comparison, when I perform (1) in opensim (without rexmodular.dll), opensim.exe does not crash and works fine from behind the router or outside of it. -p
Submitted By: Paul Fishwick Adddate: 2008-12-16 23:43:05 Here is more on exactly where it crashes - the UDP open of the external-IP (re-labeled "98.X.Y.Z" in the report below) using port 7000. Recall that the external-IP is the one from "what is my ip?" rather than the router-assigned IP (which is "192.168.1.100"). 17:16:06 - [PRIM INVENTORY]: Starting scripts in scene 17:16:06 - [SCENE]: Loading land objects from storage 17:16:06 - [UDPSERVER]: Opening UDP socket on 0.0.0.0 9000. 17:16:06 - [UDPSERVER]: UDP socket bound, getting ready to listen 17:16:06 - [UDPSERVER]: Listening on port 9000 17:16:06 - [REXAPPEAR]: PostInit called 17:16:06 - [VOICECHAT]: Listening connections from port 12000 17:16:06 - [VOICECHAT]: Connection handler started... 17:16:07 - [REX]: Overloading Login_to_Simulator 17:16:07 - [REX]: Initialising 17:16:07 - [CLIENT]: client_throttle_multiplier = 2 17:16:07 - [UDPSERVER]: Opening UDP socket on 98.X.Y.Z 7000. 17:16:07 - [APPLICATION]: Unhandled Exception: System.Net.Sockets.SocketException: The requested address i s not valid in its context at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Bind(EndPoint localEP) at OpenSim.Region.ClientStack.LindenUDP.LLUDPServer.ServerListener() at OpenSim.Region.ClientStack.LindenUDP.LLUDPServer.Start() at ModularRex.RexNetwork.RexLogin.RexLoginModule.PostInitialise() at OpenSim.Region.Environment.ModuleLoader.PostInitialise() at OpenSim.ApplicationPlugins.LoadRegions.LoadRegionsPlugin.Initialise(OpenSi mBase openSim) at OpenSim.ApplicationPluginInitialiser.Initialise(IPlugin plugin) at OpenSim.Framework.PluginLoader`1.Load() at OpenSim.Framework.PluginLoader`1.Load(String extpoint) at OpenSim.OpenSimBase.LoadPlugins() at OpenSim.OpenSimBase.StartupSpecific() at OpenSim.OpenSim.StartupSpecific() at OpenSim.Framework.Servers.BaseOpenSimServer.Startup() at OpenSim.Application.Main(String[] args) C:\OpenSim\opensim_modrex_test\bin>
Submitted By: Paul Fishwick Adddate: 2008-12-17 20:44:34 When using the internal IP in the regions config file (again, making it impossible to have external connections), the exact place where it fails seems to be either when it tries to open port 7000 or in "AddNewClient()". Not sure what opensim uses when it reads region files and adds clients, but apparently, it doesn't seem to be using the class LLUDP... But realx uses this. Perhaps this is at the heart of the problem?
Submitted By: Paul Fishwick Adddate: 2008-12-17 20:54:50 On reproducing this problem, it requires the use of a router. I am not sure if external logins are posssible in a configuration without a router since I haven't tested this, but assume that the modrex folks have. 1) Get a router (a cheap one is fine) 2) Place it between your IP service and the client computer 3) Enable DHCP, so your internal IP from the router can be something like 192.168.1.100 (or however you have configured it) 4) Make sure to port forward necessary opensim ports 5) Ensure that the xml config files for Authentication, Avatar Storage and the Opensim Regions file all point to the External IP (i.e., the external address of the router: what you get from a "what is my IP?" service) 6) build modularrex.dll and put it in the opensim\bin folder 7) launch the Rex Authentication and Avatar servers 8) Launch opensim.exe, and this should pick up the rex module 9) you should get an Exception when port 7000 is opened for listening. 10) note that if you change "external_hostname" in the regions\*.xml file to be the internal IP (192.168.1.100 for example), then opensim.exe launches fine; however, if you try to log in from elsewhere, the viewer fails when trying to do the region handshake. hope this helps.
Submitted By: Paul Fishwick Adddate: 2008-12-20 02:56:07 I decided to look into the code last night, and something appears to work well (but it doesn't fix #113--the multi-region problem). In RexLoginModule.cs -> PostInitialise() there is a reference to m_primaryRegionInfo.ExternalEndPoint.Address This is not right, and should be: m_primaryRegionInfo.InternalEndPoint.Address since on most platforms, you cannot bind a public IP directly. Rather, binding to 0.0.0.0 makes more sense, or perhaps I am confused... In any case, this patch seems to solve the problem and I can then login from multiple clients. cheers
Submitted By: Mikko Pallari Adddate: 2009-01-21 14:22:13 Fixed to branch in revision 38.
Items Dependent On This Item
Items that are duplicates