update response stream parsing
This commit is contained in:
parent
4a548f3081
commit
56b24da151
|
@ -4,6 +4,7 @@ using System.IO;
|
|||
using System.Net;
|
||||
using System.Text;
|
||||
using MediaBrowser.Model.Logging;
|
||||
using SocketHttpListener.Net;
|
||||
using HttpListenerResponse = SocketHttpListener.Net.HttpListenerResponse;
|
||||
using IHttpResponse = MediaBrowser.Model.Services.IHttpResponse;
|
||||
using IRequest = MediaBrowser.Model.Services.IRequest;
|
||||
|
@ -101,12 +102,15 @@ namespace Emby.Server.Implementations.HttpServer.SocketSharp
|
|||
var outputStream = response.OutputStream;
|
||||
|
||||
// This is needed with compression
|
||||
if (outputStream is ResponseStream)
|
||||
{
|
||||
//if (!string.IsNullOrWhiteSpace(GetHeader("Content-Encoding")))
|
||||
{
|
||||
outputStream.Flush();
|
||||
}
|
||||
|
||||
outputStream.Dispose();
|
||||
}
|
||||
response.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Emby.XmlTv" version="1.0.1" targetFramework="portable45-net45+win8" />
|
||||
<package id="Emby.XmlTv" version="1.0.2" targetFramework="portable45-net45+win8" />
|
||||
<package id="MediaBrowser.Naming" version="1.0.2" targetFramework="portable45-net45+win8" />
|
||||
<package id="SQLitePCL.pretty" version="1.1.0" targetFramework="portable45-net45+win8" />
|
||||
<package id="SQLitePCLRaw.core" version="1.1.1-pre20161109081005" targetFramework="portable45-net45+win8" />
|
||||
|
|
|
@ -153,7 +153,8 @@ namespace MediaBrowser.Api.Playback.Hls
|
|||
|
||||
var newDuration = "#EXT-X-TARGETDURATION:" + segmentLength.ToString(UsCulture);
|
||||
|
||||
text = text.Replace("#EXT-X-TARGETDURATION:" + (segmentLength + 1).ToString(UsCulture), newDuration, StringComparison.OrdinalIgnoreCase);
|
||||
text = text.Replace("#EXT-X-TARGETDURATION:" + (segmentLength - 1).ToString(UsCulture), newDuration, StringComparison.OrdinalIgnoreCase);
|
||||
//text = text.Replace("#EXT-X-TARGETDURATION:" + (segmentLength + 1).ToString(UsCulture), newDuration, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
return text;
|
||||
}
|
||||
|
|
|
@ -130,7 +130,7 @@ namespace ServiceStack
|
|||
{
|
||||
foreach (var responseHeaders in responseOptions.Headers)
|
||||
{
|
||||
if (responseHeaders.Key == "Content-Length")
|
||||
if (string.Equals(responseHeaders.Key, "Content-Length", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
response.SetContentLength(long.Parse(responseHeaders.Value));
|
||||
continue;
|
||||
|
|
|
@ -209,7 +209,9 @@ namespace SocketHttpListener.Net
|
|||
// TODO: can we get this stream before reading the input?
|
||||
if (o_stream == null)
|
||||
{
|
||||
if (context.Response.SendChunked || isExpect100Continue || context.Response.ContentLength64 <= 0)
|
||||
context.Response.DetermineIfChunked();
|
||||
|
||||
if (context.Response.SendChunked || isExpect100Continue || context.Request.IsWebSocketRequest)
|
||||
{
|
||||
o_stream = new ResponseStream(stream, context.Response, _memoryStreamFactory, _textEncoding);
|
||||
}
|
||||
|
|
|
@ -362,6 +362,22 @@ namespace SocketHttpListener.Net
|
|||
return false;
|
||||
}
|
||||
|
||||
public void DetermineIfChunked()
|
||||
{
|
||||
if (chunked)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
Version v = context.Request.ProtocolVersion;
|
||||
if (!cl_set && !chunked && v >= HttpVersion.Version11)
|
||||
chunked = true;
|
||||
if (!chunked && string.Equals(headers["Transfer-Encoding"], "chunked"))
|
||||
{
|
||||
chunked = true;
|
||||
}
|
||||
}
|
||||
|
||||
internal void SendHeaders(bool closing, MemoryStream ms)
|
||||
{
|
||||
Encoding encoding = content_encoding;
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace SocketHttpListener.Net
|
|||
// Update: we send a single packet for the first non-chunked Write
|
||||
// What happens when we set content-length to X and write X-1 bytes then close?
|
||||
// what if we don't set content-length at all?
|
||||
class ResponseStream : Stream
|
||||
public class ResponseStream : Stream
|
||||
{
|
||||
HttpListenerResponse response;
|
||||
bool disposed;
|
||||
|
|
Loading…
Reference in New Issue
Block a user