From 3a6c078b3080a6a22dbf65d061d44bca7380e392 Mon Sep 17 00:00:00 2001 From: Qstick Date: Sat, 21 Jan 2023 12:54:37 -0600 Subject: [PATCH] Fixed: Catch InvalidDataException during initial config to prevent boot loop (cherry picked from commit 9862584611f29ac3f16e0c6ef0afb183ff3f0588) --- src/NzbDrone.Host/Bootstrap.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/NzbDrone.Host/Bootstrap.cs b/src/NzbDrone.Host/Bootstrap.cs index c72b07dcb..c9ede9d05 100644 --- a/src/NzbDrone.Host/Bootstrap.cs +++ b/src/NzbDrone.Host/Bootstrap.cs @@ -198,10 +198,19 @@ namespace NzbDrone.Host private static IConfiguration GetConfiguration(StartupContext context) { var appFolder = new AppFolderInfo(context); - return new ConfigurationBuilder() - .AddXmlFile(appFolder.GetConfigPath(), optional: true, reloadOnChange: false) - .AddInMemoryCollection(new List> { new ("dataProtectionFolder", appFolder.GetDataProtectionPath()) }) - .Build(); + var configPath = appFolder.GetConfigPath(); + + try + { + return new ConfigurationBuilder() + .AddXmlFile(configPath, optional: true, reloadOnChange: false) + .AddInMemoryCollection(new List> { new ("dataProtectionFolder", appFolder.GetDataProtectionPath()) }) + .Build(); + } + catch (InvalidDataException ex) + { + throw new InvalidConfigFileException($"{configPath} is corrupt or invalid. Please delete the config file and Sonarr will recreate it.", ex); + } } private static string BuildUrl(string scheme, string bindAddress, int port)