From 26002559c0e8ae52e527a1b034da0b9e5601ea93 Mon Sep 17 00:00:00 2001 From: MW Date: Tue, 8 May 2007 16:40:20 +0000 Subject: Fixed bug where client crashes on login if in sandbox mode and region is set to anything other than 997,996 --- OpenSim.RegionServer/OpenSimMain.cs | 2 +- OpenSim.Servers/LocalUserProfileManager.cs | 10 +++++++--- OpenSim.Servers/LoginResponse.cs | 9 ++++++++- OpenSim.Servers/LoginServer.cs | 10 +++++++--- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/OpenSim.RegionServer/OpenSimMain.cs b/OpenSim.RegionServer/OpenSimMain.cs index af88d24..8d89c6a 100644 --- a/OpenSim.RegionServer/OpenSimMain.cs +++ b/OpenSim.RegionServer/OpenSimMain.cs @@ -330,7 +330,7 @@ namespace OpenSim bool sandBoxWithLoginServer = m_loginserver && m_sandbox; if (sandBoxWithLoginServer) { - loginServer = new LoginServer(gridServer, regionData.IPListenAddr, regionData.IPListenPort, this.user_accounts); + loginServer = new LoginServer(gridServer, regionData.IPListenAddr, regionData.IPListenPort,regionData.RegionLocX, regionData.RegionLocY, this.user_accounts); loginServer.Startup(); if (user_accounts) diff --git a/OpenSim.Servers/LocalUserProfileManager.cs b/OpenSim.Servers/LocalUserProfileManager.cs index 989af22..2a119c5 100644 --- a/OpenSim.Servers/LocalUserProfileManager.cs +++ b/OpenSim.Servers/LocalUserProfileManager.cs @@ -43,12 +43,16 @@ namespace OpenSim.UserServer private IGridServer m_gridServer; private int m_port; private string m_ipAddr; + private uint regionX; + private uint regionY; - public LocalUserProfileManager(IGridServer gridServer, int simPort, string ipAddr) + public LocalUserProfileManager(IGridServer gridServer, int simPort, string ipAddr , uint regX, uint regY) { m_gridServer = gridServer; m_port = simPort; m_ipAddr = ipAddr; + regionX = regX; + regionY = regY; } public override void InitUserProfiles() @@ -63,8 +67,8 @@ namespace OpenSim.UserServer response["home"] = "{'region_handle':[r" + (997 * 256).ToString() + ",r" + (996 * 256).ToString() + "], 'position':[r" + theUser.homepos.X.ToString() + ",r" + theUser.homepos.Y.ToString() + ",r" + theUser.homepos.Z.ToString() + "], 'look_at':[r" + theUser.homelookat.X.ToString() + ",r" + theUser.homelookat.Y.ToString() + ",r" + theUser.homelookat.Z.ToString() + "]}"; response["sim_port"] = m_port; response["sim_ip"] = m_ipAddr; - response["region_y"] = (Int32)996 * 256; - response["region_x"] = (Int32)997* 256; + response["region_y"] = (Int32)regionY* 256; + response["region_x"] = (Int32)regionX* 256; string first; string last; diff --git a/OpenSim.Servers/LoginResponse.cs b/OpenSim.Servers/LoginResponse.cs index 4b446d2..5169231 100644 --- a/OpenSim.Servers/LoginResponse.cs +++ b/OpenSim.Servers/LoginResponse.cs @@ -87,11 +87,16 @@ namespace OpenSim.UserServer private XmlRpcResponse defaultXmlRpcResponse; private string defaultTextResponse; - public LoginResponse() + private uint regionX; + private uint regionY; + + public LoginResponse(uint regX, uint regY) { this.loginFlags = new ArrayList(); this.globalTextures = new ArrayList(); this.SetDefaultValues(); + regionX = regX; + regionY = regY; } // LoginServer // This will go away as we replace new-login.dat: @@ -197,6 +202,8 @@ namespace OpenSim.UserServer responseData["seconds_since_epoch"] = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; responseData["login-flags"] = this.loginFlags; responseData["global-textures"] = this.globalTextures; + responseData["region_y"] = (Int32)regionY * 256; + responseData["region_x"] = (Int32)regionX * 256; return (this.xmlRpcResponse); diff --git a/OpenSim.Servers/LoginServer.cs b/OpenSim.Servers/LoginServer.cs index c56dbc1..795ce15 100644 --- a/OpenSim.Servers/LoginServer.cs +++ b/OpenSim.Servers/LoginServer.cs @@ -62,6 +62,8 @@ namespace OpenSim.UserServer private LocalUserProfileManager userManager; private int m_simPort; private string m_simAddr; + private uint regionX; + private uint regionY; public LocalUserProfileManager LocalUserManager { @@ -71,11 +73,13 @@ namespace OpenSim.UserServer } } - public LoginServer(IGridServer gridServer, string simAddr, int simPort, bool useAccounts) + public LoginServer(IGridServer gridServer, string simAddr, int simPort, uint regX, uint regY, bool useAccounts) { m_gridServer = gridServer; m_simPort = simPort; m_simAddr = simAddr; + regionX = regX; + regionY = regY; this.userAccounts = useAccounts; } @@ -97,7 +101,7 @@ namespace OpenSim.UserServer this._mpasswd = EncodePassword("testpass"); - userManager = new LocalUserProfileManager(this.m_gridServer, m_simPort, m_simAddr); + userManager = new LocalUserProfileManager(this.m_gridServer, m_simPort, m_simAddr, regionX, regionY); //userManager.InitUserProfiles(); userManager.SetKeys("", "", "", "Welcome to OpenSim"); } @@ -112,7 +116,7 @@ namespace OpenSim.UserServer LLUUID Agent; LLUUID Session; - LoginResponse loginResponse = new LoginResponse(); + LoginResponse loginResponse = new LoginResponse(regionX, regionY); //get login name if (requestData.Contains("first")) -- cgit v1.1