* Another image packet edge case. Thanks nebadon for printing a log of it
parent
a47d851295
commit
68baf9096a
|
@ -580,7 +580,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
// Console.WriteLine("ENdPacket");
|
||||
//Console.WriteLine(String.Format("srcLen:{0}, BytePos:{1}, desLen:{2}, pktsize{3}", m_asset_ref.Data.Length, CurrentBytePosition(),0, imagePacketSize));
|
||||
|
||||
|
||||
bool atEnd = false;
|
||||
|
||||
// edge case
|
||||
if ((CurrentBytePosition() + IMAGE_PACKET_SIZE) > m_asset_ref.Data.Length)
|
||||
{
|
||||
imagePacketSize = LastPacketSize();
|
||||
atEnd = true;
|
||||
// edge case 2!
|
||||
if ((CurrentBytePosition() + imagePacketSize) > m_asset_ref.Data.Length)
|
||||
{
|
||||
imagePacketSize = m_asset_ref.Data.Length - CurrentBytePosition();
|
||||
atEnd = true;
|
||||
}
|
||||
}
|
||||
|
||||
byte[] imageData = new byte[imagePacketSize];
|
||||
try { Buffer.BlockCopy(m_asset_ref.Data, CurrentBytePosition(), imageData, 0, imagePacketSize); }
|
||||
catch (Exception e)
|
||||
|
@ -596,7 +610,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
|
||||
// Send next packet to the client
|
||||
client.SendImageNextPart((ushort)(CurrentPacket - 1), requestedUUID, imageData);
|
||||
|
||||
++CurrentPacket;
|
||||
|
||||
if (atEnd)
|
||||
CurrentPacket = StopPacket + 1;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue