From 36962f176f6cac3bfbaa33c508f94ecc2e533dc2 Mon Sep 17 00:00:00 2001 From: ta264 Date: Tue, 27 Apr 2021 22:03:22 +0100 Subject: [PATCH] Always access config file via provider to utilise lock --- .../Authentication/UserService.cs | 18 ++++++++---------- .../Configuration/ConfigFileProvider.cs | 3 ++- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/NzbDrone.Core/Authentication/UserService.cs b/src/NzbDrone.Core/Authentication/UserService.cs index 0559c2133..00a7018de 100644 --- a/src/NzbDrone.Core/Authentication/UserService.cs +++ b/src/NzbDrone.Core/Authentication/UserService.cs @@ -1,9 +1,9 @@ using System; using System.Linq; -using System.Xml.Linq; using NzbDrone.Common.Disk; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.Extensions; +using NzbDrone.Core.Configuration; using NzbDrone.Core.Lifecycle; using NzbDrone.Core.Messaging.Events; @@ -24,12 +24,17 @@ public class UserService : IUserService, IHandle private readonly IUserRepository _repo; private readonly IAppFolderInfo _appFolderInfo; private readonly IDiskProvider _diskProvider; + private readonly IConfigFileProvider _configFileProvider; - public UserService(IUserRepository repo, IAppFolderInfo appFolderInfo, IDiskProvider diskProvider) + public UserService(IUserRepository repo, + IAppFolderInfo appFolderInfo, + IDiskProvider diskProvider, + IConfigFileProvider configFileProvider) { _repo = repo; _appFolderInfo = appFolderInfo; _diskProvider = diskProvider; + _configFileProvider = configFileProvider; } public User Add(string username, string password) @@ -105,14 +110,7 @@ public void Handle(ApplicationStartedEvent message) return; } - var configFile = _appFolderInfo.GetConfigPath(); - - if (!_diskProvider.FileExists(configFile)) - { - return; - } - - var xDoc = XDocument.Load(configFile); + var xDoc = _configFileProvider.LoadConfigFile(); var config = xDoc.Descendants("Config").Single(); var usernameElement = config.Descendants("Username").FirstOrDefault(); var passwordElement = config.Descendants("Password").FirstOrDefault(); diff --git a/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs b/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs index 87735669c..46e2f396c 100644 --- a/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs +++ b/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs @@ -21,6 +21,7 @@ namespace NzbDrone.Core.Configuration public interface IConfigFileProvider : IHandleAsync, IExecute { + XDocument LoadConfigFile(); Dictionary GetConfigDictionary(); void SaveConfigDictionary(Dictionary configValues); @@ -310,7 +311,7 @@ private void DeleteOldValues() SaveConfigFile(xDoc); } - private XDocument LoadConfigFile() + public XDocument LoadConfigFile() { try {