Return error code instead of the last byte of the file if range is not satisfiable

viewer-2-initial-appearance
Latif Khalifa 2010-10-09 18:01:11 +02:00
parent 06d3a529a9
commit 5e381ec67c
1 changed files with 9 additions and 1 deletions

View File

@ -186,7 +186,15 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps
// Range request
int start, end;
if (TryParseRange(range, out start, out end))
{
{
// Before clamping end make sure we can satisfy it in order to avoid
// sending back the last byte instead of an error status
if (end >= texture.Data.Length)
{
response.StatusCode = (int)System.Net.HttpStatusCode.RequestedRangeNotSatisfiable;
return;
}
end = Utils.Clamp(end, 0, texture.Data.Length - 1);
start = Utils.Clamp(start, 0, end);
int len = end - start + 1;