aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBaronGreenback <jimcartlidge@yahoo.co.uk>2020-12-31 11:39:34 +0000
committerBaronGreenback <jimcartlidge@yahoo.co.uk>2020-12-31 11:39:34 +0000
commit149c2b2169192da29d82c440175d8d9049dea8b3 (patch)
tree8eb4064edde66f5608e253b97fdc399f4c88dd91
parentdbfbf9fb5bc79f4c23552a0a881c55c4300ab75b (diff)
Added referenced assembly failure detection, and DI failure protection.
-rw-r--r--Emby.Server.Implementations/ApplicationHost.cs2
-rw-r--r--Emby.Server.Implementations/Plugins/PluginManager.cs4
2 files changed, 6 insertions, 0 deletions
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index 094134318..1b9bb86bb 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -413,6 +413,8 @@ namespace Emby.Server.Implementations
catch (Exception ex)
{
Logger.LogError(ex, "Error creating {Type}", type);
+ // If this is a plugin fail it.
+ _pluginManager.FailPlugin(type.Assembly);
return null;
}
finally
diff --git a/Emby.Server.Implementations/Plugins/PluginManager.cs b/Emby.Server.Implementations/Plugins/PluginManager.cs
index 51a75f6a3..1ab01252d 100644
--- a/Emby.Server.Implementations/Plugins/PluginManager.cs
+++ b/Emby.Server.Implementations/Plugins/PluginManager.cs
@@ -111,6 +111,10 @@ namespace Emby.Server.Implementations.Plugins
try
{
assembly = Assembly.LoadFrom(file);
+
+ // This force loads all reference dll's that the plugin uses in the try..catch block.
+ // Removing this will cause JF to bomb out if referenced dll's cause issues.
+ assembly.GetExportedTypes();
}
catch (FileLoadException ex)
{