aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Emby.Server.Implementations/HttpServer/HttpListenerHost.cs4
-rw-r--r--Emby.Server.Implementations/Services/ServiceExec.cs2
-rw-r--r--Emby.Server.Implementations/SocketSharp/WebSocketSharpListener.cs5
-rw-r--r--Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs7
-rw-r--r--Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs37
-rw-r--r--MediaBrowser.Model/Services/IRequest.cs14
6 files changed, 19 insertions, 50 deletions
diff --git a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs
index d1b1b5b24..eab755cef 100644
--- a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs
+++ b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs
@@ -225,7 +225,7 @@ namespace Emby.Server.Implementations.HttpServer
var httpRes = httpReq.Response;
- if (httpRes.IsClosed)
+ if (httpRes.OriginalResponse.HasStarted)
{
return;
}
@@ -595,8 +595,6 @@ namespace Emby.Server.Implementations.HttpServer
}
finally
{
- // TODO response closes automatically after the handler is done, but some functions rely on knowing if it's closed or not
- httpRes.IsClosed = true;
stopWatch.Stop();
var elapsed = stopWatch.Elapsed;
if (elapsed.TotalMilliseconds > 500)
diff --git a/Emby.Server.Implementations/Services/ServiceExec.cs b/Emby.Server.Implementations/Services/ServiceExec.cs
index 79f5c59e6..38952628d 100644
--- a/Emby.Server.Implementations/Services/ServiceExec.cs
+++ b/Emby.Server.Implementations/Services/ServiceExec.cs
@@ -78,7 +78,7 @@ namespace Emby.Server.Implementations.Services
foreach (var requestFilter in actionContext.RequestFilters)
{
requestFilter.RequestFilter(request, request.Response, requestDto);
- if (request.Response.IsClosed)
+ if (request.Response.OriginalResponse.HasStarted)
{
Task.FromResult<object>(null);
}
diff --git a/Emby.Server.Implementations/SocketSharp/WebSocketSharpListener.cs b/Emby.Server.Implementations/SocketSharp/WebSocketSharpListener.cs
index 2df826957..dd313b336 100644
--- a/Emby.Server.Implementations/SocketSharp/WebSocketSharpListener.cs
+++ b/Emby.Server.Implementations/SocketSharp/WebSocketSharpListener.cs
@@ -90,7 +90,10 @@ namespace Emby.Server.Implementations.SocketSharp
catch (Exception ex)
{
_logger.LogError(ex, "AcceptWebSocketAsync error");
- ctx.Response.StatusCode = 500;
+ if (!ctx.Response.HasStarted)
+ {
+ ctx.Response.StatusCode = 500;
+ }
}
}
diff --git a/Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs b/Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs
index bc002dc4c..2d3ec3c8e 100644
--- a/Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs
+++ b/Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs
@@ -20,22 +20,19 @@ namespace Emby.Server.Implementations.SocketSharp
public partial class WebSocketSharpRequest : IHttpRequest
{
private readonly HttpRequest request;
- private readonly IResponse response;
public WebSocketSharpRequest(HttpRequest httpContext, HttpResponse response, string operationName, ILogger logger)
{
this.OperationName = operationName;
this.request = httpContext;
- this.response = new WebSocketSharpResponse(logger, response, this);
+ this.Response = new WebSocketSharpResponse(logger, response);
// HandlerFactoryPath = GetHandlerPathIfAny(UrlPrefixes[0]);
}
public HttpRequest HttpRequest => request;
- public IResponse Response => response;
-
- public IResponse HttpResponse => response;
+ public IResponse Response { get; }
public string OperationName { get; set; }
diff --git a/Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs b/Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs
index a7e3e6c70..0f67eaa62 100644
--- a/Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs
+++ b/Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs
@@ -16,38 +16,28 @@ namespace Emby.Server.Implementations.SocketSharp
{
private readonly ILogger _logger;
- private readonly HttpResponse _response;
-
- public WebSocketSharpResponse(ILogger logger, HttpResponse response, IRequest request)
+ public WebSocketSharpResponse(ILogger logger, HttpResponse response)
{
_logger = logger;
- this._response = response;
- Items = new Dictionary<string, object>();
- Request = request;
+ OriginalResponse = response;
}
- public IRequest Request { get; private set; }
-
- public Dictionary<string, object> Items { get; private set; }
-
- public object OriginalResponse => _response;
+ public HttpResponse OriginalResponse { get; }
public int StatusCode
{
- get => this._response.StatusCode;
- set => this._response.StatusCode = value;
+ get => OriginalResponse.StatusCode;
+ set => OriginalResponse.StatusCode = value;
}
public string StatusDescription { get; set; }
public string ContentType
{
- get => _response.ContentType;
- set => _response.ContentType = value;
+ get => OriginalResponse.ContentType;
+ set => OriginalResponse.ContentType = value;
}
- public IHeaderDictionary Headers => _response.Headers;
-
public void AddHeader(string name, string value)
{
if (string.Equals(name, "Content-Type", StringComparison.OrdinalIgnoreCase))
@@ -56,22 +46,15 @@ namespace Emby.Server.Implementations.SocketSharp
return;
}
- _response.Headers.Add(name, value);
- }
-
- public string GetHeader(string name)
- {
- return _response.Headers[name];
+ OriginalResponse.Headers.Add(name, value);
}
public void Redirect(string url)
{
- _response.Redirect(url);
+ OriginalResponse.Redirect(url);
}
- public Stream OutputStream => _response.Body;
-
- public bool IsClosed { get; set; }
+ public Stream OutputStream => OriginalResponse.Body;
public bool SendChunked { get; set; }
diff --git a/MediaBrowser.Model/Services/IRequest.cs b/MediaBrowser.Model/Services/IRequest.cs
index edb5a2509..4f6ddb476 100644
--- a/MediaBrowser.Model/Services/IRequest.cs
+++ b/MediaBrowser.Model/Services/IRequest.cs
@@ -101,7 +101,7 @@ namespace MediaBrowser.Model.Services
public interface IResponse
{
- IRequest Request { get; }
+ HttpResponse OriginalResponse { get; }
int StatusCode { get; set; }
@@ -111,22 +111,10 @@ namespace MediaBrowser.Model.Services
void AddHeader(string name, string value);
- string GetHeader(string name);
-
void Redirect(string url);
Stream OutputStream { get; }
- /// <summary>
- /// Gets a value indicating whether this instance is closed.
- /// </summary>
- bool IsClosed { get; set; }
-
- //Add Metadata to Response
- Dictionary<string, object> Items { get; }
-
- IHeaderDictionary Headers { get; }
-
Task TransmitFile(string path, long offset, long count, FileShareMode fileShareMode, IFileSystem fileSystem, IStreamHelper streamHelper, CancellationToken cancellationToken);
bool SendChunked { get; set; }