checking return code may make failed teleports fail more gracefully.

ThreadPoolClientBranch
Brian McBee 2008-01-19 20:34:54 +00:00
parent 6353df5569
commit 17c25796b8
2 changed files with 24 additions and 17 deletions

View File

@ -92,6 +92,11 @@ namespace OpenSim.Framework.UserManagement
string firstname = (string) requestData["first"]; string firstname = (string) requestData["first"];
string lastname = (string) requestData["last"]; string lastname = (string) requestData["last"];
if( requestData.Contains("version"))
{
string clientversion = (string)requestData["version"];
MainLog.Instance.Verbose("LOGIN","Client Version " + clientversion + " for " + firstname + " " + lastname);
}
userProfile = GetTheUser(firstname, lastname); userProfile = GetTheUser(firstname, lastname);

View File

@ -421,25 +421,27 @@ namespace OpenSim.Region.Environment.Scenes
agent.startpos = position; agent.startpos = position;
agent.child = true; agent.child = true;
avatar.Close(); avatar.Close();
m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent); if (m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent) &&
m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId, m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId,
position, false); position, false)) ;
AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo();
string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId);
avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4),
capsPath);
avatar.MakeChildAgent();
if (KillObject != null)
{ {
KillObject(avatar.LocalId); AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo();
} string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId);
uint newRegionX = (uint) (regionHandle >> 40); avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4),
uint newRegionY = (((uint) (regionHandle)) >> 8); capsPath);
uint oldRegionX = (uint) (m_regionInfo.RegionHandle >> 40); avatar.MakeChildAgent();
uint oldRegionY = (((uint) (m_regionInfo.RegionHandle)) >> 8); if (KillObject != null)
if (Util.fast_distance2d((int) (newRegionX - oldRegionX), (int) (newRegionY - oldRegionY)) > 3) {
{ KillObject(avatar.LocalId);
CloseChildAgentConnections(avatar); }
uint newRegionX = (uint)(regionHandle >> 40);
uint newRegionY = (((uint)(regionHandle)) >> 8);
uint oldRegionX = (uint)(m_regionInfo.RegionHandle >> 40);
uint oldRegionY = (((uint)(m_regionInfo.RegionHandle)) >> 8);
if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3)
{
CloseChildAgentConnections(avatar);
}
} }
} }
} }