Merge branch 'avination' into ubitwork

avinationmerge
UbitUmarov 2012-07-15 23:33:06 +01:00
commit 15a1ad393c
1 changed files with 31 additions and 27 deletions

View File

@ -698,9 +698,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
#region Packet to Client Mapping #region Packet to Client Mapping
// If there is already a client for this endpoint, don't process UseCircuitCode
IClientAPI client = null;
if (!m_scene.TryGetClient(address, out client))
{
// UseCircuitCode handling // UseCircuitCode handling
if (packet.Type == PacketType.UseCircuitCode) if (packet.Type == PacketType.UseCircuitCode)
{ {
// And if there is a UseCircuitCode pending, also drop it
lock (m_pendingCache) lock (m_pendingCache)
{ {
if (m_pendingCache.Contains(address)) if (m_pendingCache.Contains(address))
@ -715,25 +720,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return; return;
} }
}
// Determine which agent this packet came from // If this is a pending connection, enqueue, don't process yet
IClientAPI client;
if (!m_scene.TryGetClient(address, out client) || !(client is LLClientView))
{
lock (m_pendingCache) lock (m_pendingCache)
{ {
Queue<UDPPacketBuffer> queue; Queue<UDPPacketBuffer> queue;
if (m_pendingCache.TryGetValue(address, out queue)) if (m_pendingCache.TryGetValue(address, out queue))
{ {
m_log.DebugFormat("[LLUDPSERVER]: Enqueued a {0} packet into the pending queue", packet.Type); //m_log.DebugFormat("[LLUDPSERVER]: Enqueued a {0} packet into the pending queue", packet.Type);
queue.Enqueue(buffer); queue.Enqueue(buffer);
} return;
else
{
m_log.Debug("[LLUDPSERVER]: Received a " + packet.Type + " packet from an unrecognized source: " + address + " in " + m_scene.RegionInfo.RegionName);
} }
} }
// Determine which agent this packet came from
if (client == null || !(client is LLClientView))
{
//m_log.Debug("[LLUDPSERVER]: Received a " + packet.Type + " packet from an unrecognized source: " + address + " in " + m_scene.RegionInfo.RegionName);
return; return;
} }