aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorLatif Khalifa2010-10-09 18:01:11 +0200
committerLatif Khalifa2010-10-09 18:01:11 +0200
commit5e381ec67c1a8d108fced63b76ae44eeb70aa38e (patch)
tree039b0f397dbc768e40ef3433e6baba850f4d0259 /OpenSim
parentIn case when 1 single byte is requested (yes viewer does this) (diff)
downloadopensim-SC-5e381ec67c1a8d108fced63b76ae44eeb70aa38e.zip
opensim-SC-5e381ec67c1a8d108fced63b76ae44eeb70aa38e.tar.gz
opensim-SC-5e381ec67c1a8d108fced63b76ae44eeb70aa38e.tar.bz2
opensim-SC-5e381ec67c1a8d108fced63b76ae44eeb70aa38e.tar.xz
Return error code instead of the last byte of the file if range is not satisfiable
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs10
1 files changed, 9 insertions, 1 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs
index d564ee6..6545be7 100644
--- a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs
@@ -186,7 +186,15 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps
186 // Range request 186 // Range request
187 int start, end; 187 int start, end;
188 if (TryParseRange(range, out start, out end)) 188 if (TryParseRange(range, out start, out end))
189 { 189 {
190 // Before clamping end make sure we can satisfy it in order to avoid
191 // sending back the last byte instead of an error status
192 if (end >= texture.Data.Length)
193 {
194 response.StatusCode = (int)System.Net.HttpStatusCode.RequestedRangeNotSatisfiable;
195 return;
196 }
197
190 end = Utils.Clamp(end, 0, texture.Data.Length - 1); 198 end = Utils.Clamp(end, 0, texture.Data.Length - 1);
191 start = Utils.Clamp(start, 0, end); 199 start = Utils.Clamp(start, 0, end);
192 int len = end - start + 1; 200 int len = end - start + 1;