aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author7illusions <z@7illusions.com>2014-04-07 12:29:37 +0200
committer7illusions <z@7illusions.com>2014-04-07 12:29:37 +0200
commit03e2bc7198b28d8ebcd902e771a0a622b6410719 (patch)
treefd0cbf390a1133452377a5dc977fe8dd08acfb5f
parentdfa5470274f112dda83f4ede5001670ab6cdb04c (diff)
Fixes DirectStreaming for Microsoft players
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs21
1 files changed, 5 insertions, 16 deletions
diff --git a/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs b/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs
index 312e718e1..08e9403aa 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs
@@ -64,7 +64,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
{
throw new ArgumentNullException("contentType");
}
-
+
RangeHeader = rangeHeader;
SourceStream = source;
IsHeadRequest = isHeadRequest;
@@ -98,11 +98,11 @@ namespace MediaBrowser.Server.Implementations.HttpServer
RangeStart = requestedRange.Key;
RangeLength = 1 + RangeEnd - RangeStart;
-
+
// Content-Length is the length of what we're serving, not the original content
Options["Content-Length"] = RangeLength.ToString(UsCulture);
Options["Content-Range"] = string.Format("bytes {0}-{1}/{2}", RangeStart, RangeEnd, TotalContentLength);
-
+
if (RangeStart > 0)
{
SourceStream.Position = RangeStart;
@@ -178,19 +178,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer
using (var source = SourceStream)
{
- // If the requested range is "0-", we can optimize by just doing a stream copy
- if (RangeEnd == TotalContentLength - 1)
- {
- await source.CopyToAsync(responseStream).ConfigureAwait(false);
- }
- else
- {
- // Read the bytes we need
- var buffer = new byte[Convert.ToInt32(RangeLength)];
- await source.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
-
- await responseStream.WriteAsync(buffer, 0, Convert.ToInt32(RangeLength)).ConfigureAwait(false);
- }
+ //Since we've already set the postion of the sourcestream, just copy the remains to the output
+ await source.CopyToAsync(responseStream).ConfigureAwait(false);
}
}