diff options
3 files changed, 17 insertions, 12 deletions
diff --git a/OpenSim/Addons/Groups/Hypergrid/GroupsServiceHGConnectorModule.cs b/OpenSim/Addons/Groups/Hypergrid/GroupsServiceHGConnectorModule.cs index 4642b2a..7d48516 100644 --- a/OpenSim/Addons/Groups/Hypergrid/GroupsServiceHGConnectorModule.cs +++ b/OpenSim/Addons/Groups/Hypergrid/GroupsServiceHGConnectorModule.cs | |||
@@ -623,10 +623,13 @@ namespace OpenSim.Groups | |||
623 | if (agent != null) | 623 | if (agent != null) |
624 | break; | 624 | break; |
625 | } | 625 | } |
626 | if (agent == null) // oops | 626 | if (agent != null) |
627 | return AgentID.ToString(); | 627 | return Util.ProduceUserUniversalIdentifier(agent); |
628 | |||
629 | // we don't know anything about this foreign user | ||
630 | // try asking the user management module, which may know more | ||
631 | return m_UserManagement.GetUserUUI(AgentID); | ||
628 | 632 | ||
629 | return Util.ProduceUserUniversalIdentifier(agent); | ||
630 | } | 633 | } |
631 | 634 | ||
632 | private string AgentUUIForOutside(string AgentIDStr) | 635 | private string AgentUUIForOutside(string AgentIDStr) |
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs index 7adb203..8c983e6 100644 --- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs +++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs | |||
@@ -481,14 +481,20 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement | |||
481 | 481 | ||
482 | public string GetUserUUI(UUID userID) | 482 | public string GetUserUUI(UUID userID) |
483 | { | 483 | { |
484 | UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, userID); | ||
485 | if (account != null) | ||
486 | return userID.ToString(); | ||
487 | |||
488 | UserData ud; | 484 | UserData ud; |
489 | lock (m_UserCache) | 485 | lock (m_UserCache) |
490 | m_UserCache.TryGetValue(userID, out ud); | 486 | m_UserCache.TryGetValue(userID, out ud); |
491 | 487 | ||
488 | if (ud == null) // It's not in the cache | ||
489 | { | ||
490 | string[] names = new string[2]; | ||
491 | // This will pull the data from either UserAccounts or GridUser | ||
492 | // and stick it into the cache | ||
493 | TryGetUserNamesFromServices(userID, names); | ||
494 | lock (m_UserCache) | ||
495 | m_UserCache.TryGetValue(userID, out ud); | ||
496 | } | ||
497 | |||
492 | if (ud != null) | 498 | if (ud != null) |
493 | { | 499 | { |
494 | string homeURL = ud.HomeURL; | 500 | string homeURL = ud.HomeURL; |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 3eaa8fd..e00206f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -5801,11 +5801,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
5801 | 5801 | ||
5802 | try | 5802 | try |
5803 | { | 5803 | { |
5804 | // If this is a hypergrid user, then we can't perform a successful groups access check here since this | 5804 | if (!AuthorizeUser(aCircuit, false, out reason)) |
5805 | // currently relies on a circuit being present in the AuthenticateHandler to construct a Hypergrid ID. | ||
5806 | // This is only present in NewUserConnection() which entity transfer calls very soon after QueryAccess(). | ||
5807 | // Therefore, we'll defer to the check in NewUserConnection() instead. | ||
5808 | if (!AuthorizeUser(aCircuit, !UserManagementModule.IsLocalGridUser(agentID), out reason)) | ||
5809 | { | 5805 | { |
5810 | //m_log.DebugFormat("[SCENE]: Denying access for {0}", agentID); | 5806 | //m_log.DebugFormat("[SCENE]: Denying access for {0}", agentID); |
5811 | return false; | 5807 | return false; |