Since we don't yet have a reliable way to release the lock that prevents a user from logging in a second time if they're already registered as logged in;

* If a user logs in and they are noted as agentOnline.  Set agentOnline = false and send a 'you're already logged in' message to the user asking them to wait 5 minutes.  These 5 minutes are not enforced (because there's no foolproof interlock release yet without the grid operator getting a support call for every little sim crash).  When the user gets the message, they can log-in immediately after it, but the user can expect weird results if they don't wait 5 minutes and log-in to the region they were in previously.
0.6.0-stable
Teravus Ovares 2008-03-18 06:03:50 +00:00
parent 42857fe4e9
commit 443c66b432
2 changed files with 2 additions and 2 deletions

View File

@ -244,7 +244,7 @@ namespace OpenSim.Framework.UserManagement
{
return
(GenerateFailureResponse("presence",
"You appear to be already logged in, if this is not the case please wait for your session to timeout, if this takes longer than a few minutes please contact the grid owner",
"You appear to be already logged in, if this is not the case please wait for your session to timeout, if this takes longer than a few minutes please contact the grid owner. Please wait 5 minutes if you are going to connect to a region nearby to the region you were at previously.",
"false"));
}

View File

@ -164,7 +164,7 @@ namespace OpenSim.Framework.UserManagement
// If agentOnline could not turn from true back to false normally
// because of some problem, for instance, the crashment of server or client,
// the user cannot log in any longer.
userProfile.currentAgent = null;
userProfile.currentAgent.agentOnline = false;
m_userManager.CommitAgent(ref userProfile);
// Reject the login