diff options
| author | Tim Hobbs <jesus.tesh@gmail.com> | 2014-04-07 09:27:24 -0700 |
|---|---|---|
| committer | Tim Hobbs <jesus.tesh@gmail.com> | 2014-04-07 09:27:24 -0700 |
| commit | c8cdc6099aebc2470f0a373da68578a3e8b8c6b6 (patch) | |
| tree | dd9c4769219c689af50e01409afb84cb177be79f /MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs | |
| parent | 416a494b7866ca048b75728a54e8867ac61ab4cb (diff) | |
| parent | 17a2beb7a2c548e85c5aef16178bc257314d54e6 (diff) | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs | 21 |
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); } } |
