Merge branch 'master' into careminster
Conflicts: OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.csavinationmerge
commit
756baff86a
|
@ -1217,13 +1217,16 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
if (neighbour.RegionHandle != sp.Scene.RegionInfo.RegionHandle)
|
if (neighbour.RegionHandle != sp.Scene.RegionInfo.RegionHandle)
|
||||||
{
|
{
|
||||||
InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//neighbour.ExternalEndPoint may return null, which will be caught
|
// Let's put this back at sync, so that it doesn't clog
|
||||||
d.BeginInvoke(sp, cagents[count], neighbour, neighbour.ExternalEndPoint, newAgent,
|
// the network, especially for regions in the same physical server.
|
||||||
InformClientOfNeighbourCompleted,
|
// We're really not in a hurry here.
|
||||||
d);
|
InformClientOfNeighbourAsync(sp, cagents[count], neighbour, neighbour.ExternalEndPoint, newAgent);
|
||||||
|
//InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync;
|
||||||
|
//d.BeginInvoke(sp, cagents[count], neighbour, neighbour.ExternalEndPoint, newAgent,
|
||||||
|
// InformClientOfNeighbourCompleted,
|
||||||
|
// d);
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (ArgumentOutOfRangeException)
|
catch (ArgumentOutOfRangeException)
|
||||||
|
|
|
@ -3395,10 +3395,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// also return a reason.</returns>
|
/// also return a reason.</returns>
|
||||||
public bool NewUserConnection(AgentCircuitData agent, uint teleportFlags, out string reason, bool requirePresenceLookup)
|
public bool NewUserConnection(AgentCircuitData agent, uint teleportFlags, out string reason, bool requirePresenceLookup)
|
||||||
{
|
{
|
||||||
bool vialogin = ((teleportFlags & (uint)Constants.TeleportFlags.ViaLogin) != 0 ||
|
bool vialogin = ((teleportFlags & (uint)TPFlags.ViaLogin) != 0 ||
|
||||||
(teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0);
|
(teleportFlags & (uint)TPFlags.ViaHGLogin) != 0);
|
||||||
bool viahome = ((teleportFlags & (uint)Constants.TeleportFlags.ViaHome) != 0);
|
bool viahome = ((teleportFlags & (uint)TPFlags.ViaHome) != 0);
|
||||||
bool godlike = ((teleportFlags & (uint)Constants.TeleportFlags.Godlike) != 0);
|
bool godlike = ((teleportFlags & (uint)TPFlags.Godlike) != 0);
|
||||||
|
|
||||||
reason = String.Empty;
|
reason = String.Empty;
|
||||||
|
|
||||||
|
@ -3411,9 +3411,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
// Don't disable this log message - it's too helpful
|
// Don't disable this log message - it's too helpful
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[SCENE]: Region {0} told of incoming {1} agent {2} {3} {4} (circuit code {5}, IP {6}, viewer {7}, teleportflags {8}, position {9})",
|
"[SCENE]: Region {0} told of incoming {1} agent {2} {3} {4} (circuit code {5}, IP {6}, viewer {7}, teleportflags ({8}), position {9})",
|
||||||
RegionInfo.RegionName, (agent.child ? "child" : "root"),agent.firstname, agent.lastname,
|
RegionInfo.RegionName, (agent.child ? "child" : "root"),agent.firstname, agent.lastname,
|
||||||
agent.AgentID, agent.circuitcode, agent.IPAddress, agent.Viewer, teleportFlags, agent.startpos);
|
agent.AgentID, agent.circuitcode, agent.IPAddress, agent.Viewer, ((TPFlags)teleportFlags).ToString(), agent.startpos);
|
||||||
|
|
||||||
if (LoginsDisabled)
|
if (LoginsDisabled)
|
||||||
{
|
{
|
||||||
|
|
|
@ -140,6 +140,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
icon.EndInvoke(iar);
|
icon.EndInvoke(iar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ExpiringCache<string, bool> _failedSims = new ExpiringCache<string, bool>();
|
||||||
public void SendChildAgentDataUpdate(AgentPosition cAgentData, ScenePresence presence)
|
public void SendChildAgentDataUpdate(AgentPosition cAgentData, ScenePresence presence)
|
||||||
{
|
{
|
||||||
// This assumes that we know what our neighbors are.
|
// This assumes that we know what our neighbors are.
|
||||||
|
@ -156,16 +157,22 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// that the region position is cached or performance will degrade
|
// that the region position is cached or performance will degrade
|
||||||
Utils.LongToUInts(regionHandle, out x, out y);
|
Utils.LongToUInts(regionHandle, out x, out y);
|
||||||
GridRegion dest = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y);
|
GridRegion dest = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y);
|
||||||
if (! simulatorList.Contains(dest.ServerURI))
|
bool v = true;
|
||||||
|
if (! simulatorList.Contains(dest.ServerURI) && !_failedSims.TryGetValue(dest.ServerURI, out v))
|
||||||
{
|
{
|
||||||
// we havent seen this simulator before, add it to the list
|
// we havent seen this simulator before, add it to the list
|
||||||
// and send it an update
|
// and send it an update
|
||||||
simulatorList.Add(dest.ServerURI);
|
simulatorList.Add(dest.ServerURI);
|
||||||
|
// Let move this to sync. Mono definitely does not like async networking.
|
||||||
|
if (!m_scene.SimulationService.UpdateAgent(dest, cAgentData))
|
||||||
|
// Also if it fails, get it out of the loop for a bit
|
||||||
|
_failedSims.Add(dest.ServerURI, true, 120);
|
||||||
|
|
||||||
SendChildAgentDataUpdateDelegate d = SendChildAgentDataUpdateAsync;
|
// Leaving this here as a reminder that we tried, and it sucks.
|
||||||
d.BeginInvoke(cAgentData, m_regionInfo.ScopeID, dest,
|
//SendChildAgentDataUpdateDelegate d = SendChildAgentDataUpdateAsync;
|
||||||
SendChildAgentDataUpdateCompleted,
|
//d.BeginInvoke(cAgentData, m_regionInfo.ScopeID, dest,
|
||||||
d);
|
// SendChildAgentDataUpdateCompleted,
|
||||||
|
// d);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2777,7 +2777,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
AgentPosition agentpos = new AgentPosition();
|
AgentPosition agentpos = new AgentPosition();
|
||||||
agentpos.CopyFrom(cadu);
|
agentpos.CopyFrom(cadu);
|
||||||
|
|
||||||
m_scene.SendOutChildAgentUpdates(agentpos, this);
|
// Let's get this out of the update loop
|
||||||
|
Util.FireAndForget(delegate { m_scene.SendOutChildAgentUpdates(agentpos, this); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue