Explorar o código

update components

Luke Pulverenti %!s(int64=9) %!d(string=hai) anos
pai
achega
1900afb311

+ 19 - 22
MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs

@@ -335,7 +335,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
         /// <param name="httpReq">The HTTP req.</param>
         /// <param name="url">The URL.</param>
         /// <returns>Task.</returns>
-        protected Task RequestHandler(IHttpRequest httpReq, Uri url)
+        protected async Task RequestHandler(IHttpRequest httpReq, Uri url)
         {
             var date = DateTime.Now;
 
@@ -345,7 +345,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
             {
                 httpRes.StatusCode = 503;
                 httpRes.Close();
-                return Task.FromResult(true);
+                return ;
             }
 
             var operationName = httpReq.OperationName;
@@ -365,13 +365,13 @@ namespace MediaBrowser.Server.Implementations.HttpServer
                 string.Equals(localPath, "/mediabrowser/", StringComparison.OrdinalIgnoreCase))
             {
                 httpRes.RedirectToUrl(DefaultRedirectPath);
-                return Task.FromResult(true);
+                return;
             }
             if (string.Equals(localPath, "/emby", StringComparison.OrdinalIgnoreCase) ||
                 string.Equals(localPath, "/mediabrowser", StringComparison.OrdinalIgnoreCase))
             {
                 httpRes.RedirectToUrl("emby/" + DefaultRedirectPath);
-                return Task.FromResult(true);
+                return;
             }
 
             if (string.Equals(localPath, "/mediabrowser/", StringComparison.OrdinalIgnoreCase) ||
@@ -389,35 +389,35 @@ namespace MediaBrowser.Server.Implementations.HttpServer
                     httpRes.Write("<!doctype html><html><head><title>Emby</title></head><body>Please update your Emby bookmark to <a href=\"" + newUrl + "\">" + newUrl + "</a></body></html>");
 
                     httpRes.Close();
-                    return Task.FromResult(true);
+                    return;
                 }
             }
 
             if (string.Equals(localPath, "/web", StringComparison.OrdinalIgnoreCase))
             {
                 httpRes.RedirectToUrl(DefaultRedirectPath);
-                return Task.FromResult(true);
+                return;
             }
             if (string.Equals(localPath, "/web/", StringComparison.OrdinalIgnoreCase))
             {
                 httpRes.RedirectToUrl("../" + DefaultRedirectPath);
-                return Task.FromResult(true);
+                return;
             }
             if (string.Equals(localPath, "/", StringComparison.OrdinalIgnoreCase))
             {
                 httpRes.RedirectToUrl(DefaultRedirectPath);
-                return Task.FromResult(true);
+                return;
             }
             if (string.IsNullOrEmpty(localPath))
             {
                 httpRes.RedirectToUrl("/" + DefaultRedirectPath);
-                return Task.FromResult(true);
+                return;
             }
 
             if (string.Equals(localPath, "/emby/pin", StringComparison.OrdinalIgnoreCase))
             {
                 httpRes.RedirectToUrl("web/pin.html");
-                return Task.FromResult(true);
+                return;
             }
 
             if (!string.IsNullOrWhiteSpace(GlobalResponse))
@@ -427,7 +427,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
                 httpRes.Write(GlobalResponse);
 
                 httpRes.Close();
-                return Task.FromResult(true);
+                return;
             }
 
             var handler = HttpHandlerFactory.GetHandler(httpReq);
@@ -443,13 +443,13 @@ namespace MediaBrowser.Server.Implementations.HttpServer
                     httpReq.OperationName = operationName = restHandler.RestPath.RequestType.GetOperationName();
                 }
 
-                var task = serviceStackHandler.ProcessRequestAsync(httpReq, httpRes, operationName);
-
-                task.ContinueWith(x => httpRes.Close(), TaskContinuationOptions.OnlyOnRanToCompletion | TaskContinuationOptions.AttachedToParent);
-                //Matches Exceptions handled in HttpListenerBase.InitTask()
-
-                task.ContinueWith(x =>
+                try
+                {
+                    await serviceStackHandler.ProcessRequestAsync(httpReq, httpRes, operationName).ConfigureAwait(false);
+                }
+                finally
                 {
+                    httpRes.Close();
                     var statusCode = httpRes.StatusCode;
 
                     var duration = DateTime.Now - date;
@@ -458,13 +458,10 @@ namespace MediaBrowser.Server.Implementations.HttpServer
                     {
                         LoggerUtils.LogResponse(_logger, statusCode, urlToLog, remoteIp, duration);
                     }
-
-                }, TaskContinuationOptions.None);
-                return task;
+                }
             }
 
-            return new NotImplementedException("Cannot execute handler: " + handler + " at PathInfo: " + httpReq.PathInfo)
-                .AsTaskException();
+            throw new NotImplementedException("Cannot execute handler: " + handler + " at PathInfo: " + httpReq.PathInfo);
         }
 
         /// <summary>

+ 34 - 13
MediaBrowser.Server.Implementations/HttpServer/StreamWriter.cs

@@ -4,13 +4,15 @@ using System;
 using System.Collections.Generic;
 using System.Globalization;
 using System.IO;
+using System.Threading.Tasks;
+using ServiceStack;
 
 namespace MediaBrowser.Server.Implementations.HttpServer
 {
     /// <summary>
     /// Class StreamWriter
     /// </summary>
-    public class StreamWriter : IStreamWriter, IHasOptions
+    public class StreamWriter : IStreamWriter, /*IAsyncStreamWriter,*/ IHasOptions
     {
         private ILogger Logger { get; set; }
 
@@ -73,30 +75,49 @@ namespace MediaBrowser.Server.Implementations.HttpServer
         {
         }
 
+        // 256k
+        private const int BufferSize = 262144;
+
         /// <summary>
         /// Writes to.
         /// </summary>
         /// <param name="responseStream">The response stream.</param>
         public void WriteTo(Stream responseStream)
         {
-            WriteToInternal(responseStream);
+            try
+            {
+                using (var src = SourceStream)
+                {
+                    src.CopyTo(responseStream, BufferSize);
+                }
+            }
+            catch (Exception ex)
+            {
+                Logger.ErrorException("Error streaming data", ex);
+
+                if (OnError != null)
+                {
+                    OnError();
+                }
+
+                throw;
+            }
+            finally
+            {
+                if (OnComplete != null)
+                {
+                    OnComplete();
+                }
+            }
         }
 
-        // 256k
-        private const int BufferSize = 262144;
-        
-        /// <summary>
-        /// Writes to async.
-        /// </summary>
-        /// <param name="responseStream">The response stream.</param>
-        /// <returns>Task.</returns>
-        private void WriteToInternal(Stream responseStream)
+        public async Task WriteToAsync(Stream responseStream)
         {
             try
             {
                 using (var src = SourceStream)
                 {
-                    src.CopyTo(responseStream, BufferSize);
+                    await src.CopyToAsync(responseStream, BufferSize).ConfigureAwait(false);
                 }
             }
             catch (Exception ex)
@@ -107,7 +128,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
                 {
                     OnError();
                 }
-                
+
                 throw;
             }
             finally

+ 2 - 2
MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj

@@ -73,8 +73,8 @@
       <HintPath>..\packages\SimpleInjector.3.2.0\lib\net45\SimpleInjector.dll</HintPath>
       <Private>True</Private>
     </Reference>
-    <Reference Include="SocketHttpListener, Version=1.0.5955.1537, Culture=neutral, processorArchitecture=MSIL">
-      <HintPath>..\packages\SocketHttpListener.1.0.0.30\lib\net45\SocketHttpListener.dll</HintPath>
+    <Reference Include="SocketHttpListener, Version=1.0.6039.25022, Culture=neutral, processorArchitecture=MSIL">
+      <HintPath>..\packages\SocketHttpListener.1.0.0.32\lib\net45\SocketHttpListener.dll</HintPath>
       <Private>True</Private>
     </Reference>
     <Reference Include="System" />

+ 1 - 1
MediaBrowser.Server.Implementations/packages.config

@@ -9,5 +9,5 @@
   <package id="morelinq" version="1.4.0" targetFramework="net45" />
   <package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" />
   <package id="SimpleInjector" version="3.2.0" targetFramework="net45" />
-  <package id="SocketHttpListener" version="1.0.0.30" targetFramework="net45" />
+  <package id="SocketHttpListener" version="1.0.0.32" targetFramework="net45" />
 </packages>