some teleport issues..

0.9.1.0-post-fixes
UbitUmarov 2018-09-14 21:54:38 +01:00
parent 075ebf3524
commit e96e923159
2 changed files with 16 additions and 17 deletions

View File

@ -4513,8 +4513,7 @@ Label_GroupsDone:
"[SCENE]: update for {0} in {1} refused: Logins Disabled", cAgentData.AgentID, RegionInfo.RegionName); "[SCENE]: update for {0} in {1} refused: Logins Disabled", cAgentData.AgentID, RegionInfo.RegionName);
return false; return false;
} }
// We have to wait until the viewer contacts this region after receiving EAC.
// That calls AddNewClient, which finally creates the ScenePresence
int flags = GetUserFlags(cAgentData.AgentID); int flags = GetUserFlags(cAgentData.AgentID);
if (RegionInfo.EstateSettings.IsBanned(cAgentData.AgentID, flags)) if (RegionInfo.EstateSettings.IsBanned(cAgentData.AgentID, flags))
{ {
@ -4551,33 +4550,27 @@ Label_GroupsDone:
if (cAgentData.SessionID != sp.ControllingClient.SessionId) if (cAgentData.SessionID != sp.ControllingClient.SessionId)
{ {
m_log.WarnFormat( m_log.WarnFormat(
"[SCENE]: Attempt to update agent {0} with invalid session id {1} (possibly from simulator in older version; tell them to update).", "[SCENE]: Attempt to update agent {0} with diferent session id {1} != {2}",
sp.UUID, cAgentData.SessionID); sp.UUID, sp.ControllingClient.SessionId, cAgentData.SessionID);
return false;
Console.WriteLine(String.Format("[SCENE]: Attempt to update agent {0} ({1}) with invalid session id {2}",
sp.UUID, sp.ControllingClient.SessionId, cAgentData.SessionID));
} }
sp.UpdateChildAgent(cAgentData); sp.UpdateChildAgent(cAgentData);
int ntimes = 20; int ntimes = 100;
if (cAgentData.SenderWantsToWaitForRoot) if (cAgentData.SenderWantsToWaitForRoot)
{ {
while (sp.IsChildAgent && ntimes-- > 0) while (sp.IsChildAgent && ntimes-- > 0)
Thread.Sleep(1000); Thread.Sleep(250);
if (sp.IsChildAgent) if (sp.IsChildAgent)
{
m_log.WarnFormat( m_log.WarnFormat(
"[SCENE]: Found presence {0} {1} unexpectedly still child in {2}", "[SCENE]: Found presence {0} {1} unexpectedly still child in {2}",
sp.Name, sp.UUID, Name); sp.Name, sp.UUID, Name);
else
m_log.InfoFormat(
"[SCENE]: Found presence {0} {1} as root in {2} after {3} waits",
sp.Name, sp.UUID, Name, 20 - ntimes);
if (sp.IsChildAgent)
return false; return false;
} }
}
return true; return true;
} }

View File

@ -1559,6 +1559,7 @@ namespace OpenSim.Region.Framework.Scenes
/// </remarks> /// </remarks>
public void MakeChildAgent(ulong newRegionHandle) public void MakeChildAgent(ulong newRegionHandle)
{ {
m_updateAgentReceivedAfterTransferEvent.Reset();
haveGroupInformation = false; haveGroupInformation = false;
gotCrossUpdate = false; gotCrossUpdate = false;
crossingFlags = 0; crossingFlags = 0;
@ -2000,6 +2001,10 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
catch { } catch { }
finally
{
m_updateAgentReceivedAfterTransferEvent.Reset();
}
return false; return false;
} }
@ -2286,8 +2291,8 @@ namespace OpenSim.Region.Framework.Scenes
{ {
if (m_attachments.Count > 0) if (m_attachments.Count > 0)
{ {
m_log.DebugFormat( // m_log.DebugFormat(
"[SCENE PRESENCE]: Restarting scripts in attachments for {0} in {1}", Name, Scene.Name); // "[SCENE PRESENCE]: Restarting scripts in attachments for {0} in {1}", Name, Scene.Name);
foreach (SceneObjectGroup sog in m_attachments) foreach (SceneObjectGroup sog in m_attachments)
{ {
@ -5713,6 +5718,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
IgnoredControls = ScriptControlled.CONTROL_ZERO; IgnoredControls = ScriptControlled.CONTROL_ZERO;
obj.eventControls = (ScriptControlled)controls; obj.eventControls = (ScriptControlled)controls;
obj.ignoreControls = ScriptControlled.CONTROL_ZERO;
} }
lock (scriptedcontrols) lock (scriptedcontrols)