aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/SocketSharp
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations/SocketSharp')
-rw-r--r--Emby.Server.Implementations/SocketSharp/RequestMono.cs17
-rw-r--r--Emby.Server.Implementations/SocketSharp/WebSocketSharpListener.cs5
-rw-r--r--Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs11
-rw-r--r--Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs37
4 files changed, 23 insertions, 47 deletions
diff --git a/Emby.Server.Implementations/SocketSharp/RequestMono.cs b/Emby.Server.Implementations/SocketSharp/RequestMono.cs
index 5e29e40584..373f6d7580 100644
--- a/Emby.Server.Implementations/SocketSharp/RequestMono.cs
+++ b/Emby.Server.Implementations/SocketSharp/RequestMono.cs
@@ -79,7 +79,7 @@ namespace Emby.Server.Implementations.SocketSharp
byte[] copy = new byte[e.Length];
input.Position = e.Start;
- input.Read(copy, 0, (int)e.Length);
+ await input.ReadAsync(copy, 0, (int)e.Length).ConfigureAwait(false);
form.Add(e.Name, (e.Encoding ?? ContentEncoding).GetString(copy, 0, copy.Length));
}
@@ -98,11 +98,11 @@ namespace Emby.Server.Implementations.SocketSharp
var form = new WebROCollection();
files = new Dictionary<string, HttpPostedFile>();
- if (IsContentType("multipart/form-data", true))
+ if (IsContentType("multipart/form-data"))
{
await LoadMultiPart(form).ConfigureAwait(false);
}
- else if (IsContentType("application/x-www-form-urlencoded", true))
+ else if (IsContentType("application/x-www-form-urlencoded"))
{
await LoadWwwForm(form).ConfigureAwait(false);
}
@@ -200,19 +200,14 @@ namespace Emby.Server.Implementations.SocketSharp
return false;
}
- private bool IsContentType(string ct, bool starts_with)
+ private bool IsContentType(string ct)
{
- if (ct == null || ContentType == null)
+ if (ContentType == null)
{
return false;
}
- if (starts_with)
- {
- return ContentType.StartsWith(ct, StringComparison.OrdinalIgnoreCase);
- }
-
- return string.Equals(ContentType, ct, StringComparison.OrdinalIgnoreCase);
+ return ContentType.StartsWith(ct, StringComparison.OrdinalIgnoreCase);
}
private async Task LoadWwwForm(WebROCollection form)
diff --git a/Emby.Server.Implementations/SocketSharp/WebSocketSharpListener.cs b/Emby.Server.Implementations/SocketSharp/WebSocketSharpListener.cs
index 2df826957a..dd313b3363 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 bc002dc4ce..e0a0ee2861 100644
--- a/Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs
+++ b/Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs
@@ -4,7 +4,6 @@ using System.Globalization;
using System.IO;
using System.Net;
using System.Text;
-using Emby.Server.Implementations.HttpServer;
using MediaBrowser.Model.Services;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
@@ -20,22 +19,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; }
@@ -405,8 +401,7 @@ namespace Emby.Server.Implementations.SocketSharp
return null;
}
- var path = sbPathInfo.ToString();
- return path.Length > 1 ? path.TrimEnd('/') : "/";
+ return sbPathInfo.Length > 1 ? sbPathInfo.ToString().TrimEnd('/') : "/";
}
public string UserAgent => request.Headers[HeaderNames.UserAgent];
diff --git a/Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs b/Emby.Server.Implementations/SocketSharp/WebSocketSharpResponse.cs
index a7e3e6c700..0f67eaa622 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; }