diff --git a/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs b/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
index 59c7c655f1..9740f5ee30 100644
--- a/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
+++ b/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
@@ -246,14 +246,15 @@ namespace Emby.Server.Implementations.AppBase
private object LoadConfiguration(string path, Type configurationType)
{
+ if (!File.Exists(path))
+ {
+ return Activator.CreateInstance(configurationType);
+ }
+
try
{
return XmlSerializer.DeserializeFromFile(configurationType, path);
}
- catch (FileNotFoundException)
- {
- return Activator.CreateInstance(configurationType);
- }
catch (IOException)
{
return Activator.CreateInstance(configurationType);
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index f0a9149220..60cc19db70 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -1564,7 +1564,7 @@ namespace Emby.Server.Implementations
/// IEnumerable{Assembly}.
protected List> GetComposablePartAssemblies()
{
- var list = GetPluginAssemblies();
+ var list = GetPluginAssemblies(ApplicationPaths.PluginsPath);
// Gets all plugin assemblies by first reading all bytes of the .dll and calling Assembly.Load against that
// This will prevent the .dll file from getting locked, and allow us to replace it when needed
@@ -1615,79 +1615,6 @@ namespace Emby.Server.Implementations
protected abstract IEnumerable GetAssembliesWithPartsInternal();
- ///
- /// Gets the plugin assemblies.
- ///
- /// IEnumerable{Assembly}.
- private List> GetPluginAssemblies()
- {
- // Copy pre-installed plugins
- var sourcePath = Path.Combine(ApplicationPaths.ApplicationResourcesPath, "plugins");
- CopyPlugins(sourcePath, ApplicationPaths.PluginsPath);
-
- return GetPluginAssemblies(ApplicationPaths.PluginsPath);
- }
-
- private void CopyPlugins(string source, string target)
- {
- List files;
-
- try
- {
- files = Directory.EnumerateFiles(source, "*.dll", SearchOption.TopDirectoryOnly)
- .ToList();
-
- }
- catch (DirectoryNotFoundException)
- {
- return;
- }
-
- if (files.Count == 0)
- {
- return;
- }
-
- foreach (var sourceFile in files)
- {
- var filename = Path.GetFileName(sourceFile);
- var targetFile = Path.Combine(target, filename);
-
- var targetFileExists = File.Exists(targetFile);
-
- if (!targetFileExists && ServerConfigurationManager.Configuration.UninstalledPlugins.Contains(filename, StringComparer.OrdinalIgnoreCase))
- {
- continue;
- }
-
- if (targetFileExists && GetDllVersion(targetFile) >= GetDllVersion(sourceFile))
- {
- continue;
- }
-
- Directory.CreateDirectory(target);
- File.Copy(sourceFile, targetFile, true);
- }
- }
-
- private Version GetDllVersion(string path)
- {
- try
- {
- var result = Version.Parse(FileVersionInfo.GetVersionInfo(path).FileVersion);
-
- Logger.LogInformation("File {Path} has version {Version}", path, result);
-
- return result;
- }
- catch (Exception ex)
- {
- Logger.LogError(ex, "Error getting version number from {Path}", path);
-
- return new Version(1, 0);
- }
- }
-
private List> GetPluginAssemblies(string path)
{
try
diff --git a/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs
index ea620cb2ee..217f366e03 100644
--- a/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs
+++ b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs
@@ -286,28 +286,18 @@ namespace Emby.Server.Implementations.HttpClientManager
private HttpResponseInfo GetCachedResponse(string responseCachePath, TimeSpan cacheLength, string url)
{
- try
+ if (File.Exists(responseCachePath)
+ && _fileSystem.GetLastWriteTimeUtc(responseCachePath).Add(cacheLength) > DateTime.UtcNow)
{
- if (_fileSystem.GetLastWriteTimeUtc(responseCachePath).Add(cacheLength) > DateTime.UtcNow)
+ var stream = _fileSystem.GetFileStream(responseCachePath, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read, true);
+
+ return new HttpResponseInfo
{
- var stream = _fileSystem.GetFileStream(responseCachePath, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read, true);
-
- return new HttpResponseInfo
- {
- ResponseUrl = url,
- Content = stream,
- StatusCode = HttpStatusCode.OK,
- ContentLength = stream.Length
- };
- }
- }
- catch (FileNotFoundException) // REVIEW: @bond Is this really faster?
- {
-
- }
- catch (DirectoryNotFoundException)
- {
-
+ ResponseUrl = url,
+ Content = stream,
+ StatusCode = HttpStatusCode.OK,
+ ContentLength = stream.Length
+ };
}
return null;
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index ad070ed794..9688ab385a 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -395,38 +395,33 @@ namespace Emby.Server.Implementations.Library
foreach (var fileSystemInfo in item.GetDeletePaths().ToList())
{
- try
+ if (File.Exists(fileSystemInfo.FullName))
{
- _logger.LogDebug("Deleting path {path}", fileSystemInfo.FullName);
- if (fileSystemInfo.IsDirectory)
+ try
{
- _fileSystem.DeleteDirectory(fileSystemInfo.FullName, true);
+ _logger.LogDebug("Deleting path {path}", fileSystemInfo.FullName);
+ if (fileSystemInfo.IsDirectory)
+ {
+ _fileSystem.DeleteDirectory(fileSystemInfo.FullName, true);
+ }
+ else
+ {
+ _fileSystem.DeleteFile(fileSystemInfo.FullName);
+ }
}
- else
+ catch (IOException)
{
- _fileSystem.DeleteFile(fileSystemInfo.FullName);
+ if (isRequiredForDelete)
+ {
+ throw;
+ }
}
- }
- catch (FileNotFoundException)
- {
- // may have already been deleted manually by user
- }
- catch (DirectoryNotFoundException)
- {
- // may have already been deleted manually by user
- }
- catch (IOException)
- {
- if (isRequiredForDelete)
+ catch (UnauthorizedAccessException)
{
- throw;
- }
- }
- catch (UnauthorizedAccessException)
- {
- if (isRequiredForDelete)
- {
- throw;
+ if (isRequiredForDelete)
+ {
+ throw;
+ }
}
}
diff --git a/Emby.Server.Implementations/Library/UserManager.cs b/Emby.Server.Implementations/Library/UserManager.cs
index 6139659b70..d6f8446504 100644
--- a/Emby.Server.Implementations/Library/UserManager.cs
+++ b/Emby.Server.Implementations/Library/UserManager.cs
@@ -1029,6 +1029,11 @@ namespace Emby.Server.Implementations.Library
{
var path = GetPolicyFilePath(user);
+ if (!File.Exists(path))
+ {
+ return GetDefaultPolicy(user);
+ }
+
try
{
lock (_policySyncLock)
@@ -1036,10 +1041,6 @@ namespace Emby.Server.Implementations.Library
return (UserPolicy)_xmlSerializer.DeserializeFromFile(typeof(UserPolicy), path);
}
}
- catch (FileNotFoundException)
- {
- return GetDefaultPolicy(user);
- }
catch (IOException)
{
return GetDefaultPolicy(user);
@@ -1128,6 +1129,11 @@ namespace Emby.Server.Implementations.Library
{
var path = GetConfigurationFilePath(user);
+ if (!File.Exists(path))
+ {
+ return new UserConfiguration();
+ }
+
try
{
lock (_configSyncLock)
@@ -1135,10 +1141,6 @@ namespace Emby.Server.Implementations.Library
return (UserConfiguration)_xmlSerializer.DeserializeFromFile(typeof(UserConfiguration), path);
}
}
- catch (FileNotFoundException)
- {
- return new UserConfiguration();
- }
catch (IOException)
{
return new UserConfiguration();
diff --git a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs
index 0ae7ae96cf..57bc61c7a2 100644
--- a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs
@@ -101,17 +101,20 @@ namespace Emby.Server.Implementations.ScheduledTasks
List previouslyFailedImages;
- try
+ if (File.Exists(failHistoryPath))
{
- previouslyFailedImages = _fileSystem.ReadAllText(failHistoryPath)
- .Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
- .ToList();
+ try
+ {
+ previouslyFailedImages = _fileSystem.ReadAllText(failHistoryPath)
+ .Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
+ .ToList();
+ }
+ catch (IOException)
+ {
+ previouslyFailedImages = new List();
+ }
}
- catch (FileNotFoundException)
- {
- previouslyFailedImages = new List();
- }
- catch (IOException)
+ else
{
previouslyFailedImages = new List();
}
diff --git a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
index 93a9a0d814..88b3dd07f0 100644
--- a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
@@ -129,21 +129,16 @@ namespace Emby.Server.Implementations.ScheduledTasks
{
if (_lastExecutionResult == null && !_readFromFile)
{
- try
+ if (File.Exists(path))
{
- _lastExecutionResult = JsonSerializer.DeserializeFromFile(path);
- }
- catch (DirectoryNotFoundException)
- {
- // File doesn't exist. No biggie
- }
- catch (FileNotFoundException)
- {
- // File doesn't exist. No biggie
- }
- catch (Exception ex)
- {
- Logger.LogError(ex, "Error deserializing {path}", path);
+ try
+ {
+ _lastExecutionResult = JsonSerializer.DeserializeFromFile(path);
+ }
+ catch (Exception ex)
+ {
+ Logger.LogError(ex, "Error deserializing {File}", path);
+ }
}
_readFromFile = true;
}
@@ -532,28 +527,16 @@ namespace Emby.Server.Implementations.ScheduledTasks
private TaskTriggerInfo[] LoadTriggerSettings()
{
- try
- {
- var list = JsonSerializer.DeserializeFromFile>(GetConfigurationFilePath());
-
- if (list != null)
- {
- return list.ToArray();
- }
- }
- catch (FileNotFoundException)
+ string path = GetConfigurationFilePath();
+ if (!File.Exists(path))
{
// File doesn't exist. No biggie. Return defaults.
+ GetDefaultTriggers();
}
- catch (DirectoryNotFoundException)
- {
- // File doesn't exist. No biggie. Return defaults.
- }
- catch
- {
- }
- return GetDefaultTriggers();
+ var list = JsonSerializer.DeserializeFromFile(path);
+
+ return list ?? GetDefaultTriggers();
}
private TaskTriggerInfo[] GetDefaultTriggers()