diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index ef0a119130..c8cfd3aad6 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -2459,7 +2459,12 @@ namespace OpenSim.Region.Environment.Scenes m_authenticateHandler.AddNewCircuit(agent.circuitcode, agent); // rewrite session_id CachedUserInfo userinfo = CommsManager.UserProfileCacheService.GetUserDetails(agent.AgentID); - userinfo.SessionID = agent.SessionID; + if (userinfo.SessionID != agent.SessionID) // means cache hit but outdated session ID + { + // Let's re-grab the whole user profile, because anything may have changed on the user server. + CommsManager.UserProfileCacheService.RemoveUser(agent.AgentID); + userinfo = CommsManager.UserProfileCacheService.GetUserDetails(agent.AgentID); + } } else {