diff options
author | Oren Hurvitz | 2014-04-06 16:18:40 +0300 |
---|---|---|
committer | Oren Hurvitz | 2014-04-06 15:40:45 +0100 |
commit | abe0f4a0882942e211b17408767eca664762e062 (patch) | |
tree | c58141c3b8aab60e40c69c4e9bf47d46caa959fa /OpenSim/Services/LLLoginService/LLLoginService.cs | |
parent | Pass the correct position to QueryAccess() instead of UUID.Zero (it was wrong... (diff) | |
download | opensim-SC-abe0f4a0882942e211b17408767eca664762e062.zip opensim-SC-abe0f4a0882942e211b17408767eca664762e062.tar.gz opensim-SC-abe0f4a0882942e211b17408767eca664762e062.tar.bz2 opensim-SC-abe0f4a0882942e211b17408767eca664762e062.tar.xz |
When preparing a Hypergrid teleport, tell the receiving grid which user is entering the grid.
This can affect which region to use. E.g., returning users may be allowed to enter any region, whereas users from other grids will have to enter a gateway region. Previously per-user decisions were only made later, but by then it's too late to change which region the user enters.
Diffstat (limited to 'OpenSim/Services/LLLoginService/LLLoginService.cs')
-rw-r--r-- | OpenSim/Services/LLLoginService/LLLoginService.cs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index 6d6e3d6..a2fb308 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs | |||
@@ -688,8 +688,7 @@ namespace OpenSim.Services.LLLoginService | |||
688 | if (parts.Length > 1) | 688 | if (parts.Length > 1) |
689 | UInt32.TryParse(parts[1], out port); | 689 | UInt32.TryParse(parts[1], out port); |
690 | 690 | ||
691 | // GridRegion region = FindForeignRegion(domainName, port, regionName, out gatekeeper); | 691 | region = FindForeignRegion(domainName, port, regionName, account, out gatekeeper); |
692 | region = FindForeignRegion(domainName, port, regionName, out gatekeeper); | ||
693 | return region; | 692 | return region; |
694 | } | 693 | } |
695 | } | 694 | } |
@@ -738,7 +737,7 @@ namespace OpenSim.Services.LLLoginService | |||
738 | return null; | 737 | return null; |
739 | } | 738 | } |
740 | 739 | ||
741 | private GridRegion FindForeignRegion(string domainName, uint port, string regionName, out GridRegion gatekeeper) | 740 | private GridRegion FindForeignRegion(string domainName, uint port, string regionName, UserAccount account, out GridRegion gatekeeper) |
742 | { | 741 | { |
743 | m_log.Debug("[LLLOGIN SERVICE]: attempting to findforeignregion " + domainName + ":" + port.ToString() + ":" + regionName); | 742 | m_log.Debug("[LLLOGIN SERVICE]: attempting to findforeignregion " + domainName + ":" + port.ToString() + ":" + regionName); |
744 | gatekeeper = new GridRegion(); | 743 | gatekeeper = new GridRegion(); |
@@ -753,7 +752,11 @@ namespace OpenSim.Services.LLLoginService | |||
753 | string message; | 752 | string message; |
754 | if (m_GatekeeperConnector.LinkRegion(gatekeeper, out regionID, out handle, out domainName, out imageURL, out reason)) | 753 | if (m_GatekeeperConnector.LinkRegion(gatekeeper, out regionID, out handle, out domainName, out imageURL, out reason)) |
755 | { | 754 | { |
756 | GridRegion destination = m_GatekeeperConnector.GetHyperlinkRegion(gatekeeper, regionID, out message); | 755 | string homeURI = null; |
756 | if (account.ServiceURLs != null && account.ServiceURLs.ContainsKey("HomeURI")) | ||
757 | homeURI = (string)account.ServiceURLs["HomeURI"]; | ||
758 | |||
759 | GridRegion destination = m_GatekeeperConnector.GetHyperlinkRegion(gatekeeper, regionID, account.PrincipalID, homeURI, out message); | ||
757 | return destination; | 760 | return destination; |
758 | } | 761 | } |
759 | 762 | ||