From b41614ac81e113364080a2fe96e92723d50f4b06 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 22 Jul 2017 18:58:03 -0400 Subject: [PATCH] update request logging --- .../HttpServer/HttpListenerHost.cs | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs index 28c23b7665..05f78eba95 100644 --- a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs +++ b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs @@ -104,6 +104,7 @@ namespace Emby.Server.Implementations.HttpServer readonly Dictionary _mapExceptionToStatusCode = new Dictionary { {typeof (ResourceNotFoundException), 404}, + {typeof (RemoteServiceUnavailableException), 502}, {typeof (FileNotFoundException), 404}, //{typeof (DirectoryNotFoundException), 404}, {typeof (SecurityException), 401}, @@ -268,6 +269,29 @@ namespace Emby.Server.Implementations.HttpServer } } + private Exception GetActualException(Exception ex) + { + var agg = ex as AggregateException; + if (agg != null) + { + var inner = agg.InnerException; + if (inner != null) + { + return GetActualException(inner); + } + else + { + var inners = agg.InnerExceptions; + if (inners != null && inners.Count > 0) + { + return GetActualException(inners[0]); + } + } + } + + return ex; + } + private int GetStatusCode(Exception ex) { if (ex is ArgumentException) @@ -280,7 +304,7 @@ namespace Emby.Server.Implementations.HttpServer int statusCode; if (!_mapExceptionToStatusCode.TryGetValue(exceptionType, out statusCode)) { - if (string.Equals(exceptionType.Name, "DirectoryNotFoundException", StringComparison.OrdinalIgnoreCase)) + if (ex is DirectoryNotFoundException) { statusCode = 404; } @@ -297,6 +321,8 @@ namespace Emby.Server.Implementations.HttpServer { try { + ex = GetActualException(ex); + if (logException) { _logger.ErrorException("Error processing request", ex);