* Bug fix in TP home: typo in unpacking of GridUserInfo.

* Bug fix in TPs across neighboring regions: bug was introduced when getting rid of crashed sessions.
soprefactor
Diva Canto 2010-06-05 09:39:09 -07:00
parent fe3e1c67ae
commit ab3afd5f42
4 changed files with 14 additions and 3 deletions

View File

@ -410,6 +410,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
teleportFlags, capsPath);
}
// Let's set this to true tentatively. This does not trigger OnChildAgent
sp.IsChildAgent = true;
// TeleportFinish makes the client send CompleteMovementIntoRegion (at the destination), which
// trigers a whole shebang of things there, including MakeRoot. So let's wait for confirmation
// that the client contacted the destination before we send the attachments and close things here.
@ -418,6 +421,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
// Client never contacted destination. Let's restore everything back
sp.ControllingClient.SendTeleportFailed("Problems connecting to destination.");
// Fail. Reset it back
sp.IsChildAgent = false;
ResetFromTransit(sp.UUID);
// Yikes! We should just have a ref to scene here.
@ -436,7 +442,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
KillEntity(sp.Scene, sp.LocalId);
// Now let's make it officially a child agent
sp.MakeChildAgent();
// Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone
if (NeedsClosing(oldRegionX, newRegionX, oldRegionY, newRegionY, reg))
@ -538,6 +546,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
client.SendTeleportFailed("Your home region could not be found.");
return;
}
m_log.DebugFormat("[ENTITY TRANSFER MODULE]: User's home region is {0} {1} ({2}-{3})",
regionInfo.RegionName, regionInfo.RegionID, regionInfo.RegionLocX / Constants.RegionSize, regionInfo.RegionLocY / Constants.RegionSize);
// a little eekie that this goes back to Scene and with a forced cast, will fix that at some point...
((Scene)(client.Scene)).RequestTeleportLocation(
client, regionInfo.RegionHandle, uinfo.HomePosition, uinfo.HomeLookAt,

View File

@ -3990,7 +3990,9 @@ namespace OpenSim.Region.Framework.Scenes
// bordercross if position is outside of region
if (!result)
{
regionHandle = m_regInfo.RegionHandle;
}
else
{
// not in this region, undo the shift!

View File

@ -206,9 +206,7 @@ namespace OpenSim.Services.Connectors
if ((replyData != null) && replyData.ContainsKey("result") && (replyData["result"] != null))
{
if (replyData["result"] is Dictionary<string, object>)
{
guinfo = new GridUserInfo((Dictionary<string, object>)replyData["result"]);
}
}
return guinfo;

View File

@ -65,7 +65,7 @@ namespace OpenSim.Services.Interfaces
Vector3.TryParse(kvp["HomeLookAt"].ToString(), out HomeLookAt);
if (kvp.ContainsKey("LastRegionID"))
UUID.TryParse(kvp["LastRegionID"].ToString(), out HomeRegionID);
UUID.TryParse(kvp["LastRegionID"].ToString(), out LastRegionID);
if (kvp.ContainsKey("LastPosition"))
Vector3.TryParse(kvp["LastPosition"].ToString(), out LastPosition);
if (kvp.ContainsKey("LastLookAt"))