diff options
-rw-r--r-- | OpenSim/Grid/UserServer/UserLoginService.cs | 48 | ||||
-rw-r--r-- | OpenSim/Region/Communications/Local/LocalLoginService.cs | 39 |
2 files changed, 67 insertions, 20 deletions
diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs index dfc44ef..0caefb1 100644 --- a/OpenSim/Grid/UserServer/UserLoginService.cs +++ b/OpenSim/Grid/UserServer/UserLoginService.cs | |||
@@ -183,12 +183,17 @@ namespace OpenSim.Grid.UserServer | |||
183 | // HomeLocation | 183 | // HomeLocation |
184 | RegionProfileData homeInfo = null; | 184 | RegionProfileData homeInfo = null; |
185 | // use the homeRegionID if it is stored already. If not, use the regionHandle as before | 185 | // use the homeRegionID if it is stored already. If not, use the regionHandle as before |
186 | if (theUser.HomeRegionID != UUID.Zero) | 186 | UUID homeRegionId = theUser.HomeRegionID; |
187 | homeInfo = RegionProfileData.RequestSimProfileData(theUser.HomeRegionID, | 187 | ulong homeRegionHandle = theUser.HomeRegion; |
188 | m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey); | 188 | if (homeRegionId != UUID.Zero) |
189 | { | ||
190 | homeInfo = GetRegionInfo(homeRegionId); | ||
191 | } | ||
189 | else | 192 | else |
190 | homeInfo = RegionProfileData.RequestSimProfileData(theUser.HomeRegion, | 193 | { |
191 | m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey); | 194 | homeInfo = GetRegionInfo(homeRegionHandle); |
195 | } | ||
196 | |||
192 | if (homeInfo != null) | 197 | if (homeInfo != null) |
193 | { | 198 | { |
194 | response.Home = | 199 | response.Home = |
@@ -204,8 +209,8 @@ namespace OpenSim.Grid.UserServer | |||
204 | // Emergency mode: Home-region isn't available, so we can't request the region info. | 209 | // Emergency mode: Home-region isn't available, so we can't request the region info. |
205 | // Use the stored home regionHandle instead. | 210 | // Use the stored home regionHandle instead. |
206 | // NOTE: If the home-region moves, this will be wrong until the users update their user-profile again | 211 | // NOTE: If the home-region moves, this will be wrong until the users update their user-profile again |
207 | ulong regionX = theUser.HomeRegion >> 32; | 212 | ulong regionX = homeRegionHandle >> 32; |
208 | ulong regionY = theUser.HomeRegion & 0xffffffff; | 213 | ulong regionY = homeRegionHandle & 0xffffffff; |
209 | response.Home = | 214 | response.Home = |
210 | string.Format( | 215 | string.Format( |
211 | "{{'region_handle':[r{0},r{1}], 'position':[r{2},r{3},r{4}], 'look_at':[r{5},r{6},r{7}]}}", | 216 | "{{'region_handle':[r{0},r{1}], 'position':[r{2},r{3},r{4}], 'look_at':[r{5},r{6},r{7}]}}", |
@@ -227,8 +232,8 @@ namespace OpenSim.Grid.UserServer | |||
227 | } | 232 | } |
228 | else if (startLocationRequest == "last") | 233 | else if (startLocationRequest == "last") |
229 | { | 234 | { |
230 | regionInfo = RegionProfileData.RequestSimProfileData(theUser.CurrentAgent.Region, | 235 | UUID lastRegion = theUser.CurrentAgent.Region; |
231 | m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey); | 236 | regionInfo = GetRegionInfo(lastRegion); |
232 | response.LookAt = "[r" + theUser.CurrentAgent.LookAt.X.ToString() + ",r" + theUser.CurrentAgent.LookAt.Y.ToString() + ",r" + theUser.CurrentAgent.LookAt.Z.ToString() + "]"; | 237 | response.LookAt = "[r" + theUser.CurrentAgent.LookAt.X.ToString() + ",r" + theUser.CurrentAgent.LookAt.Y.ToString() + ",r" + theUser.CurrentAgent.LookAt.Z.ToString() + "]"; |
233 | } | 238 | } |
234 | else | 239 | else |
@@ -242,8 +247,7 @@ namespace OpenSim.Grid.UserServer | |||
242 | else | 247 | else |
243 | { | 248 | { |
244 | string region = uriMatch.Groups["region"].ToString(); | 249 | string region = uriMatch.Groups["region"].ToString(); |
245 | regionInfo = RegionProfileData.RequestSimProfileData(region, | 250 | regionInfo = RequestClosestRegion(region); |
246 | m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey); | ||
247 | if (regionInfo == null) | 251 | if (regionInfo == null) |
248 | { | 252 | { |
249 | m_log.InfoFormat("[LOGIN]: Got Custom Login URL {0}, can't locate region {1}", startLocationRequest, region); | 253 | m_log.InfoFormat("[LOGIN]: Got Custom Login URL {0}, can't locate region {1}", startLocationRequest, region); |
@@ -280,7 +284,7 @@ namespace OpenSim.Grid.UserServer | |||
280 | } | 284 | } |
281 | 285 | ||
282 | m_log.Error("[LOGIN]: Sending user to default region " + defaultHandle + " instead"); | 286 | m_log.Error("[LOGIN]: Sending user to default region " + defaultHandle + " instead"); |
283 | regionInfo = RegionProfileData.RequestSimProfileData(defaultHandle, m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey); | 287 | regionInfo = GetRegionInfo(defaultHandle); |
284 | 288 | ||
285 | // Customise the response | 289 | // Customise the response |
286 | //response.Home = | 290 | //response.Home = |
@@ -296,6 +300,26 @@ namespace OpenSim.Grid.UserServer | |||
296 | return PrepareLoginToRegion(regionInfo, theUser, response); | 300 | return PrepareLoginToRegion(regionInfo, theUser, response); |
297 | } | 301 | } |
298 | 302 | ||
303 | protected RegionProfileData RequestClosestRegion(string region) | ||
304 | { | ||
305 | return RegionProfileData.RequestSimProfileData(region, | ||
306 | m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey); | ||
307 | } | ||
308 | |||
309 | protected RegionProfileData GetRegionInfo(ulong homeRegionHandle) | ||
310 | { | ||
311 | return RegionProfileData.RequestSimProfileData(homeRegionHandle, | ||
312 | m_config.GridServerURL, m_config.GridSendKey, | ||
313 | m_config.GridRecvKey); | ||
314 | } | ||
315 | |||
316 | protected RegionProfileData GetRegionInfo(UUID homeRegionId) | ||
317 | { | ||
318 | return RegionProfileData.RequestSimProfileData(homeRegionId, | ||
319 | m_config.GridServerURL, m_config.GridSendKey, | ||
320 | m_config.GridRecvKey); | ||
321 | } | ||
322 | |||
299 | /// <summary> | 323 | /// <summary> |
300 | /// Add active gestures of the user to the login response. | 324 | /// Add active gestures of the user to the login response. |
301 | /// </summary> | 325 | /// </summary> |
diff --git a/OpenSim/Region/Communications/Local/LocalLoginService.cs b/OpenSim/Region/Communications/Local/LocalLoginService.cs index 159773b..5cd587d 100644 --- a/OpenSim/Region/Communications/Local/LocalLoginService.cs +++ b/OpenSim/Region/Communications/Local/LocalLoginService.cs | |||
@@ -145,10 +145,17 @@ namespace OpenSim.Region.Communications.Local | |||
145 | RegionInfo homeInfo = null; | 145 | RegionInfo homeInfo = null; |
146 | 146 | ||
147 | // use the homeRegionID if it is stored already. If not, use the regionHandle as before | 147 | // use the homeRegionID if it is stored already. If not, use the regionHandle as before |
148 | if (theUser.HomeRegionID != UUID.Zero) | 148 | UUID homeRegionId = theUser.HomeRegionID; |
149 | homeInfo = m_gridService.RequestNeighbourInfo(theUser.HomeRegionID); | 149 | ulong homeRegionHandle = theUser.HomeRegion; |
150 | if (homeRegionId != UUID.Zero) | ||
151 | { | ||
152 | homeInfo = GetRegionInfo(homeRegionId); | ||
153 | } | ||
150 | else | 154 | else |
151 | homeInfo = m_gridService.RequestNeighbourInfo(theUser.HomeRegion); | 155 | { |
156 | homeInfo = GetRegionInfo(homeRegionHandle); | ||
157 | } | ||
158 | |||
152 | if (homeInfo != null) | 159 | if (homeInfo != null) |
153 | { | 160 | { |
154 | response.Home = | 161 | response.Home = |
@@ -164,8 +171,8 @@ namespace OpenSim.Region.Communications.Local | |||
164 | // Emergency mode: Home-region isn't available, so we can't request the region info. | 171 | // Emergency mode: Home-region isn't available, so we can't request the region info. |
165 | // Use the stored home regionHandle instead. | 172 | // Use the stored home regionHandle instead. |
166 | // NOTE: If the home-region moves, this will be wrong until the users update their user-profile again | 173 | // NOTE: If the home-region moves, this will be wrong until the users update their user-profile again |
167 | ulong regionX = theUser.HomeRegion >> 32; | 174 | ulong regionX = homeRegionHandle >> 32; |
168 | ulong regionY = theUser.HomeRegion & 0xffffffff; | 175 | ulong regionY = homeRegionHandle & 0xffffffff; |
169 | response.Home = | 176 | response.Home = |
170 | string.Format( | 177 | string.Format( |
171 | "{{'region_handle':[r{0},r{1}], 'position':[r{2},r{3},r{4}], 'look_at':[r{5},r{6},r{7}]}}", | 178 | "{{'region_handle':[r{0},r{1}], 'position':[r{2},r{3},r{4}], 'look_at':[r{5},r{6},r{7}]}}", |
@@ -188,7 +195,8 @@ namespace OpenSim.Region.Communications.Local | |||
188 | } | 195 | } |
189 | else if (startLocationRequest == "last") | 196 | else if (startLocationRequest == "last") |
190 | { | 197 | { |
191 | regionInfo = m_gridService.RequestNeighbourInfo(theUser.CurrentAgent.Region); | 198 | UUID lastRegion = theUser.CurrentAgent.Region; |
199 | regionInfo = GetRegionInfo(lastRegion); | ||
192 | response.LookAt = "[r" + theUser.CurrentAgent.LookAt.X.ToString() + ",r" + theUser.CurrentAgent.LookAt.Y.ToString() + ",r" + theUser.CurrentAgent.LookAt.Z.ToString() + "]"; | 200 | response.LookAt = "[r" + theUser.CurrentAgent.LookAt.X.ToString() + ",r" + theUser.CurrentAgent.LookAt.Y.ToString() + ",r" + theUser.CurrentAgent.LookAt.Z.ToString() + "]"; |
193 | } | 201 | } |
194 | else | 202 | else |
@@ -202,7 +210,7 @@ namespace OpenSim.Region.Communications.Local | |||
202 | else | 210 | else |
203 | { | 211 | { |
204 | string region = uriMatch.Groups["region"].ToString(); | 212 | string region = uriMatch.Groups["region"].ToString(); |
205 | regionInfo = m_gridService.RequestClosestRegion(region); | 213 | regionInfo = RequestClosestRegion(region); |
206 | if (regionInfo == null) | 214 | if (regionInfo == null) |
207 | { | 215 | { |
208 | m_log.InfoFormat("[LOGIN]: Got Custom Login URL {0}, can't locate region {1}", startLocationRequest, region); | 216 | m_log.InfoFormat("[LOGIN]: Got Custom Login URL {0}, can't locate region {1}", startLocationRequest, region); |
@@ -238,7 +246,7 @@ namespace OpenSim.Region.Communications.Local | |||
238 | } | 246 | } |
239 | 247 | ||
240 | m_log.Error("[LOGIN]: Sending user to default region " + defaultHandle + " instead"); | 248 | m_log.Error("[LOGIN]: Sending user to default region " + defaultHandle + " instead"); |
241 | regionInfo = m_gridService.RequestNeighbourInfo(defaultHandle); | 249 | regionInfo = GetRegionInfo(defaultHandle); |
242 | 250 | ||
243 | // Customise the response | 251 | // Customise the response |
244 | //response.Home = | 252 | //response.Home = |
@@ -254,6 +262,21 @@ namespace OpenSim.Region.Communications.Local | |||
254 | return PrepareLoginToRegion(regionInfo, theUser, response); | 262 | return PrepareLoginToRegion(regionInfo, theUser, response); |
255 | } | 263 | } |
256 | 264 | ||
265 | protected RegionInfo RequestClosestRegion(string region) | ||
266 | { | ||
267 | return m_gridService.RequestClosestRegion(region); | ||
268 | } | ||
269 | |||
270 | protected RegionInfo GetRegionInfo(ulong homeRegionHandle) | ||
271 | { | ||
272 | return m_gridService.RequestNeighbourInfo(homeRegionHandle); | ||
273 | } | ||
274 | |||
275 | protected RegionInfo GetRegionInfo(UUID homeRegionId) | ||
276 | { | ||
277 | return m_gridService.RequestNeighbourInfo(homeRegionId); | ||
278 | } | ||
279 | |||
257 | /// <summary> | 280 | /// <summary> |
258 | /// Add active gestures of the user to the login response. | 281 | /// Add active gestures of the user to the login response. |
259 | /// </summary> | 282 | /// </summary> |