If an agent is logging in, rather than teleporting, make sure all known
circuits for that agent are closed.avinationmerge
parent
4cc552162e
commit
309cfeff88
|
@ -139,6 +139,14 @@ namespace OpenSim.Region.CoreModules.Framework
|
||||||
{
|
{
|
||||||
Caps oldCaps = m_capsObjects[circuitCode];
|
Caps oldCaps = m_capsObjects[circuitCode];
|
||||||
|
|
||||||
|
// Remove tge handlers. They may conflict with the
|
||||||
|
// new object created below
|
||||||
|
oldCaps.DeregisterHandlers();
|
||||||
|
|
||||||
|
// Better safe ... should not be needed but also
|
||||||
|
// no big deal
|
||||||
|
m_capsObjects.Remove(circuitCode);
|
||||||
|
|
||||||
// if (capsObjectPath == oldCaps.CapsObjectPath)
|
// if (capsObjectPath == oldCaps.CapsObjectPath)
|
||||||
// {
|
// {
|
||||||
// m_log.WarnFormat(
|
// m_log.WarnFormat(
|
||||||
|
|
|
@ -3988,6 +3988,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// We need the circuit data here for some of the subsequent checks. (groups, for example)
|
// We need the circuit data here for some of the subsequent checks. (groups, for example)
|
||||||
// If the checks fail, we remove the circuit.
|
// If the checks fail, we remove the circuit.
|
||||||
acd.teleportFlags = teleportFlags;
|
acd.teleportFlags = teleportFlags;
|
||||||
|
|
||||||
|
// Remove any preexisting circuit - we don't want duplicates
|
||||||
|
// This is a stab at preventing avatar "ghosting"
|
||||||
|
if (vialogin)
|
||||||
|
m_authenticateHandler.RemoveCircuit(acd.AgentID);
|
||||||
|
|
||||||
m_authenticateHandler.AddNewCircuit(acd.circuitcode, acd);
|
m_authenticateHandler.AddNewCircuit(acd.circuitcode, acd);
|
||||||
|
|
||||||
land = LandChannel.GetLandObject(acd.startpos.X, acd.startpos.Y);
|
land = LandChannel.GetLandObject(acd.startpos.X, acd.startpos.Y);
|
||||||
|
|
Loading…
Reference in New Issue