diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 6916c6d..c74dca4 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -2003,8 +2003,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
2003 | m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; | 2003 | m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; |
2004 | m_sceneGridService.OnExpectPrim += IncomingInterRegionPrimGroup; | 2004 | m_sceneGridService.OnExpectPrim += IncomingInterRegionPrimGroup; |
2005 | m_sceneGridService.OnRemoveKnownRegionFromAvatar += HandleRemoveKnownRegionsFromAvatar; | 2005 | m_sceneGridService.OnRemoveKnownRegionFromAvatar += HandleRemoveKnownRegionsFromAvatar; |
2006 | 2006 | m_sceneGridService.OnLogOffUser += HandleLogOffUserFromGrid; | |
2007 | m_sceneGridService.KillObject = SendKillObject; | 2007 | m_sceneGridService.KillObject += SendKillObject; |
2008 | } | 2008 | } |
2009 | 2009 | ||
2010 | /// <summary> | 2010 | /// <summary> |
@@ -2012,6 +2012,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
2012 | /// </summary> | 2012 | /// </summary> |
2013 | public void UnRegisterReginWithComms() | 2013 | public void UnRegisterReginWithComms() |
2014 | { | 2014 | { |
2015 | m_sceneGridService.KillObject -= SendKillObject; | ||
2016 | m_sceneGridService.OnLogOffUser -= HandleLogOffUserFromGrid; | ||
2015 | m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar; | 2017 | m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar; |
2016 | m_sceneGridService.OnExpectPrim -= IncomingInterRegionPrimGroup; | 2018 | m_sceneGridService.OnExpectPrim -= IncomingInterRegionPrimGroup; |
2017 | m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; | 2019 | m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; |
@@ -2064,6 +2066,34 @@ namespace OpenSim.Region.Environment.Scenes | |||
2064 | } | 2066 | } |
2065 | } | 2067 | } |
2066 | 2068 | ||
2069 | protected void HandleLogOffUserFromGrid(ulong regionHandle, LLUUID AvatarID, LLUUID RegionSecret, string message) | ||
2070 | { | ||
2071 | if (RegionInfo.RegionHandle == regionHandle) | ||
2072 | { | ||
2073 | ScenePresence loggingOffUser = null; | ||
2074 | loggingOffUser = GetScenePresence(AvatarID); | ||
2075 | if (loggingOffUser != null) | ||
2076 | { | ||
2077 | if (RegionSecret == loggingOffUser.ControllingClient.SecureSessionId) | ||
2078 | { | ||
2079 | loggingOffUser.ControllingClient.Kick(message); | ||
2080 | // Give them a second to receive the message! | ||
2081 | System.Threading.Thread.Sleep(1000); | ||
2082 | loggingOffUser.ControllingClient.Close(true); | ||
2083 | } | ||
2084 | else | ||
2085 | { | ||
2086 | m_log.Info("[USERLOGOFF]: System sending the LogOff user message failed to sucessfully authenticate"); | ||
2087 | } | ||
2088 | } | ||
2089 | else | ||
2090 | { | ||
2091 | m_log.InfoFormat("[USERLOGOFF]: Got a logoff request for {0} but the user isn't here. The user might already have been logged out", AvatarID.ToString()); | ||
2092 | } | ||
2093 | } | ||
2094 | |||
2095 | |||
2096 | } | ||
2067 | /// <summary> | 2097 | /// <summary> |
2068 | /// Add a caps handler for the given agent. If the CAPS handler already exists for this agent, | 2098 | /// Add a caps handler for the given agent. If the CAPS handler already exists for this agent, |
2069 | /// then it is replaced by a new CAPS handler. | 2099 | /// then it is replaced by a new CAPS handler. |