* Fixed a null NewPack error in ClientView.InPacket (object pool returning null objects?)
parent
76255c4793
commit
2641f78a20
|
@ -2217,44 +2217,48 @@ namespace OpenSim.Region.ClientStack
|
|||
public virtual void InPacket(Packet NewPack)
|
||||
{
|
||||
// Handle appended ACKs
|
||||
if (NewPack.Header.AppendedAcks)
|
||||
if (NewPack != null)
|
||||
{
|
||||
lock (m_needAck)
|
||||
if (NewPack.Header.AppendedAcks)
|
||||
{
|
||||
foreach (uint ack in NewPack.Header.AckList)
|
||||
lock (m_needAck)
|
||||
{
|
||||
m_needAck.Remove(ack);
|
||||
foreach (uint ack in NewPack.Header.AckList)
|
||||
{
|
||||
m_needAck.Remove(ack);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Handle PacketAck packets
|
||||
if (NewPack.Type == PacketType.PacketAck)
|
||||
{
|
||||
PacketAckPacket ackPacket = (PacketAckPacket) NewPack;
|
||||
|
||||
lock (m_needAck)
|
||||
// Handle PacketAck packets
|
||||
if (NewPack.Type == PacketType.PacketAck)
|
||||
{
|
||||
foreach (PacketAckPacket.PacketsBlock block in ackPacket.Packets)
|
||||
PacketAckPacket ackPacket = (PacketAckPacket) NewPack;
|
||||
|
||||
lock (m_needAck)
|
||||
{
|
||||
m_needAck.Remove(block.ID);
|
||||
foreach (PacketAckPacket.PacketsBlock block in ackPacket.Packets)
|
||||
{
|
||||
m_needAck.Remove(block.ID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ((NewPack.Type == PacketType.StartPingCheck))
|
||||
{
|
||||
//reply to pingcheck
|
||||
StartPingCheckPacket startPing = (StartPingCheckPacket) NewPack;
|
||||
CompletePingCheckPacket endPing = new CompletePingCheckPacket();
|
||||
endPing.PingID.PingID = startPing.PingID.PingID;
|
||||
OutPacket(endPing, ThrottleOutPacketType.Task);
|
||||
}
|
||||
else
|
||||
{
|
||||
QueItem item = new QueItem();
|
||||
item.Packet = NewPack;
|
||||
item.Incoming = true;
|
||||
m_packetQueue.Enqueue(item);
|
||||
else if ((NewPack.Type == PacketType.StartPingCheck))
|
||||
{
|
||||
//reply to pingcheck
|
||||
StartPingCheckPacket startPing = (StartPingCheckPacket) NewPack;
|
||||
CompletePingCheckPacket endPing = new CompletePingCheckPacket();
|
||||
endPing.PingID.PingID = startPing.PingID.PingID;
|
||||
OutPacket(endPing, ThrottleOutPacketType.Task);
|
||||
}
|
||||
else
|
||||
{
|
||||
QueItem item = new QueItem();
|
||||
item.Packet = NewPack;
|
||||
item.Incoming = true;
|
||||
m_packetQueue.Enqueue(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -242,6 +242,9 @@ namespace OpenSim.Region.Environment.LandManagement
|
|||
|
||||
if (x >= 64 || y >= 64 || x < 0 || y < 0)
|
||||
{
|
||||
// These exceptions here will cause a lot of complaints from the users specifically because
|
||||
// they happen every time at border crossings
|
||||
|
||||
throw new Exception("Error: Parcel not found at point " + x + ", " + y);
|
||||
}
|
||||
else
|
||||
|
@ -255,6 +258,8 @@ namespace OpenSim.Region.Environment.LandManagement
|
|||
{
|
||||
if (x >= 256 || y >= 256 || x < 0 || y < 0)
|
||||
{
|
||||
// These exceptions here will cause a lot of complaints from the users specifically because
|
||||
// they happen every time at border crossings
|
||||
throw new Exception("Error: Parcel not found at point " + x + ", " + y);
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue