Send KillPackets on the Task queue rather than the State queue

Object updates are sent on the task queue.  It's possible for an object update to be placed on the client queue before a kill packet comes along.
The kill packet would then be placed on the state queue and possibly get sent before the update
If the update gets sent afterwards then client get undeletable no owner objects until relog
Placing the kills in the task queue should mean that they are received after updates.  The kill record prevents subsequent updates getting on the queue

Comments state that updates are sent via the state queue but this isn't true.  If this was the case this problem might not exist.
This commit is contained in:
Justin Clark-Casey (justincc)
2010-09-17 01:16:21 +01:00
parent 5b18f8be25
commit 5072429263
3 changed files with 17 additions and 2 deletions

View File

@@ -500,6 +500,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// FIXME: Implement?
}
/// <summary>
/// Actually send a packet to a client.
/// </summary>
/// <param name="outgoingPacket"></param>
internal void SendPacketFinal(OutgoingPacket outgoingPacket)
{
UDPPacketBuffer buffer = outgoingPacket.Buffer;