Revert "Fix for hanging on "Connecting to region".. caused by packets being processed before the presence has bound to receive events. Fixed this by adding packets to a queue and then processing them when the presence is ready."

This reverts commit 91b1d17e5b.

Conflicts:

	OpenSim/Client/Sirikata/ClientStack/SirikataClientView.cs
	OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
	OpenSim/Region/Framework/Scenes/ScenePresence.cs
avinationmerge
Melanie 2010-11-05 14:27:14 +01:00
parent 654814d563
commit f985775962
9 changed files with 63 additions and 88 deletions

View File

@ -820,10 +820,6 @@ namespace OpenSim.Client.MXP.ClientStack
//throw new System.NotImplementedException(); //throw new System.NotImplementedException();
} }
public void ProcessPendingPackets()
{
}
public void ProcessInPacket(Packet NewPack) public void ProcessInPacket(Packet NewPack)
{ {
//throw new System.NotImplementedException(); //throw new System.NotImplementedException();

View File

@ -446,10 +446,6 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }
public void ProcessPendingPackets()
{
}
public void ProcessInPacket(Packet NewPack) public void ProcessInPacket(Packet NewPack)
{ {
throw new System.NotImplementedException(); throw new System.NotImplementedException();

View File

@ -944,7 +944,6 @@ namespace OpenSim.Framework
void SetDebugPacketLevel(int newDebug); void SetDebugPacketLevel(int newDebug);
void InPacket(object NewPack); void InPacket(object NewPack);
void ProcessPendingPackets();
void ProcessInPacket(Packet NewPack); void ProcessInPacket(Packet NewPack);
void Close(); void Close();
void Close(bool sendStop); void Close(bool sendStop);

View File

@ -342,7 +342,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private AgentUpdateArgs lastarg; private AgentUpdateArgs lastarg;
private bool m_IsActive = true; private bool m_IsActive = true;
private bool m_IsLoggingOut = false; private bool m_IsLoggingOut = false;
private bool m_IsPresenceReady = false;
protected Dictionary<PacketType, PacketProcessor> m_packetHandlers = new Dictionary<PacketType, PacketProcessor>(); protected Dictionary<PacketType, PacketProcessor> m_packetHandlers = new Dictionary<PacketType, PacketProcessor>();
protected Dictionary<string, GenericMessage> m_genericPacketHandlers = new Dictionary<string, GenericMessage>(); //PauPaw:Local Generic Message handlers protected Dictionary<string, GenericMessage> m_genericPacketHandlers = new Dictionary<string, GenericMessage>(); //PauPaw:Local Generic Message handlers
@ -365,7 +364,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private Timer m_propertiesPacketTimer; private Timer m_propertiesPacketTimer;
private List<ObjectPropertiesPacket.ObjectDataBlock> m_propertiesBlocks = new List<ObjectPropertiesPacket.ObjectDataBlock>(); private List<ObjectPropertiesPacket.ObjectDataBlock> m_propertiesBlocks = new List<ObjectPropertiesPacket.ObjectDataBlock>();
private List<Packet> m_pendingPackets;
#endregion Class Members #endregion Class Members
@ -418,7 +416,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
get { return m_IsActive; } get { return m_IsActive; }
set { m_IsActive = value; } set { m_IsActive = value; }
} }
public bool IsLoggingOut public bool IsLoggingOut
{ {
get { return m_IsLoggingOut; } get { return m_IsLoggingOut; }
@ -11354,48 +11351,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP
} }
} }
/// <summary>
/// This processes packets which have accumulated while the presence was still in the process of initialising.
/// </summary>
public void ProcessPendingPackets()
{
m_IsPresenceReady = true;
if (m_pendingPackets == null)
return;
foreach (Packet p in m_pendingPackets)
{
ProcessInPacket(p);
}
m_pendingPackets.Clear();
}
/// <summary> /// <summary>
/// Entryway from the client to the simulator. All UDP packets from the client will end up here /// Entryway from the client to the simulator. All UDP packets from the client will end up here
/// </summary> /// </summary>
/// <param name="Pack">OpenMetaverse.packet</param> /// <param name="Pack">OpenMetaverse.packet</param>
public void ProcessInPacket(Packet packet) public void ProcessInPacket(Packet packet)
{ {
if (m_debugPacketLevel > 0) if (m_debugPacketLevel >= 255)
{ m_log.DebugFormat("[CLIENT]: Packet IN {0}", Pack.Type);
bool outputPacket = true;
if (m_debugPacketLevel <= 255 && packet.Type == PacketType.AgentUpdate) if (!ProcessPacketMethod(Pack))
outputPacket = false; m_log.Warn("[CLIENT]: unhandled packet " + Pack.Type);
if (m_debugPacketLevel <= 200 && packet.Type == PacketType.RequestImage) PacketPool.Instance.ReturnPacket(Pack);
outputPacket = false;
if (m_debugPacketLevel <= 100 && (packet.Type == PacketType.ViewerEffect || packet.Type == PacketType.AgentAnimation))
outputPacket = false;
if (outputPacket)
m_log.DebugFormat("[CLIENT]: Packet IN {0}", packet.Type);
}
if (!ProcessPacketMethod(packet))
m_log.Warn("[CLIENT]: unhandled packet " + packet.Type);
PacketPool.Instance.ReturnPacket(packet);
} }
private static PrimitiveBaseShape GetShapeFromAddPacket(ObjectAddPacket addPacket) private static PrimitiveBaseShape GetShapeFromAddPacket(ObjectAddPacket addPacket)

View File

@ -821,10 +821,6 @@ namespace OpenSim.Region.Examples.SimpleModule
{ {
} }
public void ProcessPendingPackets()
{
}
public void ProcessInPacket(Packet NewPack) public void ProcessInPacket(Packet NewPack)
{ {
} }

View File

@ -766,11 +766,8 @@ namespace OpenSim.Region.Framework.Scenes
// MIC: This gets called again in CompleteMovement // MIC: This gets called again in CompleteMovement
SendInitialFullUpdateToAllClients(); SendInitialFullUpdateToAllClients();
RegisterToEvents(); RegisterToEvents();
if (m_controllingClient != null)
{
m_controllingClient.ProcessPendingPackets();
}
SetDirectionVectors(); SetDirectionVectors();
} }
@ -895,7 +892,11 @@ namespace OpenSim.Region.Framework.Scenes
m_rootRegionHandle = m_scene.RegionInfo.RegionHandle; m_rootRegionHandle = m_scene.RegionInfo.RegionHandle;
<<<<<<< HEAD
m_scene.EventManager.TriggerSetRootAgentScene(m_uuid, m_scene); m_scene.EventManager.TriggerSetRootAgentScene(m_uuid, m_scene);
=======
m_scene.SetRootAgentScene(m_uuid);
>>>>>>> 91b1d17... Fix for hanging on "Connecting to region".. caused by packets being processed before the presence has bound to receive events. Fixed this by adding packets to a queue and then processing them when the presence is ready.
// Moved this from SendInitialData to ensure that m_appearance is initialized // Moved this from SendInitialData to ensure that m_appearance is initialized
// before the inventory is processed in MakeRootAgent. This fixes a race condition // before the inventory is processed in MakeRootAgent. This fixes a race condition
@ -911,6 +912,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
Border crossedBorder = m_scene.GetCrossedBorder(pos, Cardinals.N); Border crossedBorder = m_scene.GetCrossedBorder(pos, Cardinals.N);
pos.Y = crossedBorder.BorderLine.Z - 1; pos.Y = crossedBorder.BorderLine.Z - 1;
<<<<<<< HEAD
} }
//If they're TP'ing in or logging in, we haven't had time to add any known child regions yet. //If they're TP'ing in or logging in, we haven't had time to add any known child regions yet.
@ -927,6 +929,24 @@ namespace OpenSim.Region.Framework.Scenes
pos = land.LandData.UserLocation; pos = land.LandData.UserLocation;
} }
} }
=======
}
//If they're TP'ing in or logging in, we haven't had time to add any known child regions yet.
//This has the unfortunate consequence that if somebody is TP'ing who is already a child agent,
//they'll bypass the landing point. But I can't think of any decent way of fixing this.
if (KnownChildRegionHandles.Count == 0)
{
ILandObject land = m_scene.LandChannel.GetLandObject(pos.X, pos.Y);
if (land != null)
{
//Don't restrict gods, estate managers, or land owners to the TP point. This behaviour mimics agni.
if (land.LandData.LandingType == (byte)1 && land.LandData.UserLocation != Vector3.Zero && m_userLevel < 200 && !m_scene.RegionInfo.EstateSettings.IsEstateManager(m_uuid) && land.LandData.OwnerID != m_uuid)
{
pos = land.LandData.UserLocation;
}
}
>>>>>>> 91b1d17... Fix for hanging on "Connecting to region".. caused by packets being processed before the presence has bound to receive events. Fixed this by adding packets to a queue and then processing them when the presence is ready.
} }
if (pos.X < 0 || pos.Y < 0 || pos.Z < 0) if (pos.X < 0 || pos.Y < 0 || pos.Z < 0)
@ -1240,6 +1260,7 @@ namespace OpenSim.Region.Framework.Scenes
pos.Z = ground + 1.5f; pos.Z = ground + 1.5f;
AbsolutePosition = pos; AbsolutePosition = pos;
} }
m_isChildAgent = false; m_isChildAgent = false;
bool m_flying = ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); bool m_flying = ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0);
MakeRootAgent(AbsolutePosition, m_flying); MakeRootAgent(AbsolutePosition, m_flying);
@ -1842,6 +1863,7 @@ namespace OpenSim.Region.Framework.Scenes
Quaternion avatarRot = Quaternion.Inverse(Quaternion.Inverse(Rotation) * partIRot); // world or. of the av Quaternion avatarRot = Quaternion.Inverse(Quaternion.Inverse(Rotation) * partIRot); // world or. of the av
Vector3 avStandUp = new Vector3(1.0f, 0f, 0f) * avatarRot; // 1M infront of av Vector3 avStandUp = new Vector3(1.0f, 0f, 0f) * avatarRot; // 1M infront of av
<<<<<<< HEAD
if (m_physicsActor == null) if (m_physicsActor == null)
{ {
@ -1854,6 +1876,19 @@ namespace OpenSim.Region.Framework.Scenes
AbsolutePosition = avWorldStandUp; //KF: Fix stand up. AbsolutePosition = avWorldStandUp; //KF: Fix stand up.
part.IsOccupied = false; part.IsOccupied = false;
part.ParentGroup.DeleteAvatar(ControllingClient.AgentId); part.ParentGroup.DeleteAvatar(ControllingClient.AgentId);
=======
if (m_physicsActor == null)
{
AddToPhysicalScene(false);
>>>>>>> 91b1d17... Fix for hanging on "Connecting to region".. caused by packets being processed before the presence has bound to receive events. Fixed this by adding packets to a queue and then processing them when the presence is ready.
}
//CW: If the part isn't null then we can set the current position
if (part != null)
{
Vector3 avWorldStandUp = avStandUp + part.GetWorldPosition() + (m_pos * partRot); // + av sit offset!
AbsolutePosition = avWorldStandUp; //KF: Fix stand up.
part.IsOccupied = false;
} }
else else
{ {
@ -3993,10 +4028,7 @@ if (m_animator.m_jumping) force.Z = m_animator.m_jumpVelocity; // add for ju
m_scene = scene; m_scene = scene;
RegisterToEvents(); RegisterToEvents();
if (m_controllingClient != null)
{
m_controllingClient.ProcessPendingPackets();
}
/* /*
AbsolutePosition = client.StartPos; AbsolutePosition = client.StartPos;

View File

@ -877,10 +877,6 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
} }
public void ProcessPendingPackets()
{
}
public void ProcessInPacket(Packet NewPack) public void ProcessInPacket(Packet NewPack)
{ {

View File

@ -836,10 +836,6 @@ namespace OpenSim.Region.OptionalModules.World.NPC
{ {
} }
public void ProcessPendingPackets()
{
}
public void ProcessInPacket(Packet NewPack) public void ProcessInPacket(Packet NewPack)
{ {
} }

View File

@ -879,10 +879,6 @@ namespace OpenSim.Tests.Common.Mock
{ {
} }
public void ProcessPendingPackets()
{
}
public void ProcessInPacket(Packet NewPack) public void ProcessInPacket(Packet NewPack)
{ {
} }