Patch login reply exploding in a fireball

This commit is contained in:
Madpeter 2021-12-06 19:25:29 +00:00
parent dbc2371fde
commit 9f2fcdedda

View file

@ -463,34 +463,38 @@ namespace OpenMetaverse
return; return;
// Home // Home
HomeRegion = 0;
HomePosition = Vector3.Zero;
HomeLookAt = Vector3.Zero;
if (reply.ContainsKey("home")) if (reply.ContainsKey("home"))
{ {
OSD osdHome = OSDParser.DeserializeLLSDNotation(reply["home"].ToString()); try
if (osdHome.Type == OSDType.Map)
{ {
var home = (OSDMap)osdHome; OSD osdHome = OSDParser.DeserializeLLSDNotation(reply["home"].ToString());
OSD homeRegion; if (osdHome.Type == OSDType.Map)
if (home.TryGetValue("region_handle", out homeRegion) && homeRegion.Type == OSDType.Array)
{ {
OSDArray homeArray = (OSDArray)homeRegion; var home = (OSDMap)osdHome;
if (homeArray.Count == 2)
HomeRegion = Utils.UIntsToLong((uint)homeArray[0].AsInteger(),
(uint)homeArray[1].AsInteger());
else
HomeRegion = 0;
}
HomePosition = ParseVector3("position", home); OSD homeRegion;
HomeLookAt = ParseVector3("look_at", home); if (home.TryGetValue("region_handle", out homeRegion) && homeRegion.Type == OSDType.Array)
{
OSDArray homeArray = (OSDArray)homeRegion;
if (homeArray.Count == 2)
HomeRegion = Utils.UIntsToLong((uint)homeArray[0].AsInteger(),
(uint)homeArray[1].AsInteger());
else
HomeRegion = 0;
}
HomePosition = ParseVector3("position", home);
HomeLookAt = ParseVector3("look_at", home);
}
}
catch (Exception e)
{
Logger.Log("Unable to unpack home location: " + e.Message, Helpers.LogLevel.Warning);
} }
}
else
{
HomeRegion = 0;
HomePosition = Vector3.Zero;
HomeLookAt = Vector3.Zero;
} }
CircuitCode = (int)ParseUInt("circuit_code", reply); CircuitCode = (int)ParseUInt("circuit_code", reply);