Kicking child agents off on the first login after a client crash. The child agents kickoff was
missing from when this is run in grid mode. But, worse, turns out that this whole feature of kicking off the user after a crash was entirely missing from standalone mode.0.6.1-post-fixes
parent
ab77b22f0f
commit
7b6471f642
|
@ -57,7 +57,7 @@ namespace OpenSim.Region.Communications.Local
|
|||
/// <summary>
|
||||
/// Used to make requests to the local regions.
|
||||
/// </summary>
|
||||
protected IGridServices m_gridService;
|
||||
protected LocalBackEndServices m_gridService;
|
||||
|
||||
public event LoginToRegionEvent OnLoginToRegion;
|
||||
|
||||
|
@ -376,5 +376,28 @@ namespace OpenSim.Region.Communications.Local
|
|||
|
||||
return new InventoryData(AgentInventoryArray, rootID);
|
||||
}
|
||||
|
||||
public override void LogOffUser(UserProfileData theUser, string message)
|
||||
{
|
||||
RegionInfo SimInfo;
|
||||
try
|
||||
{
|
||||
SimInfo = this.m_gridService.RequestNeighbourInfo(theUser.CurrentAgent.Handle);
|
||||
|
||||
if (SimInfo == null)
|
||||
{
|
||||
m_log.Error("[LOCAL LOGIN]: Region user was in isn't currently logged in");
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
m_log.Error("[LOCAL LOGIN]: Unable to look up region to log user off");
|
||||
return;
|
||||
}
|
||||
|
||||
m_gridService.TriggerLogOffUser(SimInfo.RegionHandle, theUser.ID, theUser.CurrentAgent.SecureSessionID, "Logging you off");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2946,6 +2946,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
if (RegionSecret == loggingOffUser.ControllingClient.SecureSessionId)
|
||||
{
|
||||
m_sceneGridService.SendCloseChildAgentConnections(loggingOffUser.UUID, new List<ulong>(loggingOffUser.KnownRegions.Keys));
|
||||
loggingOffUser.ControllingClient.Kick(message);
|
||||
// Give them a second to receive the message!
|
||||
System.Threading.Thread.Sleep(1000);
|
||||
|
|
Loading…
Reference in New Issue