From 07d0f558c441a0936441ed23ed076cf54a0dc578 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sat, 9 Feb 2008 07:53:01 +0000 Subject: * Fixed nebadon's UserServer crash bug from yesterday. * Made Estate tools work for estate managers without needing to request admin status First * Added code to make the Simulator version to be reported in the About box of the client --- OpenSim/Framework/Communications/UserManagerBase.cs | 12 +++++++++--- OpenSim/Framework/IScene.cs | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'OpenSim/Framework') diff --git a/OpenSim/Framework/Communications/UserManagerBase.cs b/OpenSim/Framework/Communications/UserManagerBase.cs index e5a943b..dbf9276 100644 --- a/OpenSim/Framework/Communications/UserManagerBase.cs +++ b/OpenSim/Framework/Communications/UserManagerBase.cs @@ -427,6 +427,8 @@ namespace OpenSim.Framework.UserManagement if (userProfile != null) { + // This line needs to be in side the above if statement or the UserServer will crash on some logouts. + m_log.Info("[LOGOUT]: " + userProfile.username + " " + userProfile.surname + " from " + regionhandle + "(" + posx + "," + posy + "," + posz + ")"); userAgent = userProfile.currentAgent; if (userAgent != null) @@ -434,7 +436,10 @@ namespace OpenSim.Framework.UserManagement userAgent.agentOnline = false; userAgent.logoutTime = Util.UnixTimeSinceEpoch(); userAgent.sessionID = LLUUID.Zero; - userAgent.currentRegion = regionid; + if (regionid != null) + { + userAgent.currentRegion = regionid; + } userAgent.currentHandle = regionhandle; userAgent.currentPos = currentPos; @@ -446,9 +451,10 @@ namespace OpenSim.Framework.UserManagement } else { - m_log.Info("[LOGOUT]: didn't save logout position, currentAgent: " + userAgent.ToString() ); + // If currentagent is null, we can't reference it here or the UserServer crashes! + m_log.Info("[LOGOUT]: didn't save logout position: " + userid.ToString()); } - m_log.Info("[LOGOUT]: " + userProfile.username + " " + userProfile.surname + " from " + regionhandle + "(" + posx + "," + posy + "," + posz + ")" ); + } else { diff --git a/OpenSim/Framework/IScene.cs b/OpenSim/Framework/IScene.cs index 96cb21e..3445050 100644 --- a/OpenSim/Framework/IScene.cs +++ b/OpenSim/Framework/IScene.cs @@ -52,6 +52,8 @@ namespace OpenSim.Framework void Restart(int seconds); bool OtherRegionUp(RegionInfo thisRegion); + string GetSimulatorVersion(); + RegionInfo RegionInfo { get; } uint NextLocalId { get; } -- cgit v1.1