diff --git a/src/NzbDrone.Core/Movies/MoveMovieService.cs b/src/NzbDrone.Core/Movies/MoveMovieService.cs index e9f58538a..1551c9023 100644 --- a/src/NzbDrone.Core/Movies/MoveMovieService.cs +++ b/src/NzbDrone.Core/Movies/MoveMovieService.cs @@ -37,6 +37,12 @@ public MoveMovieService(IMovieService movieService, private void MoveSingleMovie(Movie movie, string sourcePath, string destinationPath, int? index = null, int? total = null) { + if (!sourcePath.IsPathValid(PathValidationType.CurrentOs)) + { + _logger.Warn("Folder '{0}' for '{1}' is invalid, unable to move movie. Try moving files manually", sourcePath, movie.Title); + return; + } + if (!_diskProvider.FolderExists(sourcePath)) { _logger.Debug("Folder '{0}' for '{1}' does not exist, not moving.", sourcePath, movie.Title); diff --git a/src/NzbDrone.Core/Validation/Paths/MoviePathValidation.cs b/src/NzbDrone.Core/Validation/Paths/MoviePathValidation.cs index 010024aaa..00a6dd488 100644 --- a/src/NzbDrone.Core/Validation/Paths/MoviePathValidation.cs +++ b/src/NzbDrone.Core/Validation/Paths/MoviePathValidation.cs @@ -1,5 +1,6 @@ using System.Linq; using FluentValidation.Validators; +using NzbDrone.Common.Disk; using NzbDrone.Common.Extensions; using NzbDrone.Core.Movies; @@ -28,7 +29,10 @@ protected override bool IsValid(PropertyValidatorContext context) context.MessageFormatter.AppendArgument("path", context.PropertyValue.ToString()); - return !_moviesService.AllMoviePaths().Any(s => s.Value.PathEquals(context.PropertyValue.ToString()) && s.Key != instanceId); + // Skip the path for this movie and any invalid paths + return !_moviesService.AllMoviePaths().Any(s => s.Key != instanceId && + s.Value.IsPathValid(PathValidationType.CurrentOs) && + s.Value.PathEquals(context.PropertyValue.ToString())); } } } diff --git a/src/NzbDrone.Core/Validation/Paths/RootFolderValidator.cs b/src/NzbDrone.Core/Validation/Paths/RootFolderValidator.cs index 95067cd6f..3f384fe31 100644 --- a/src/NzbDrone.Core/Validation/Paths/RootFolderValidator.cs +++ b/src/NzbDrone.Core/Validation/Paths/RootFolderValidator.cs @@ -1,4 +1,5 @@ -using FluentValidation.Validators; +using FluentValidation.Validators; +using NzbDrone.Common.Disk; using NzbDrone.Common.Extensions; using NzbDrone.Core.RootFolders; @@ -24,7 +25,7 @@ protected override bool IsValid(PropertyValidatorContext context) return true; } - return !_rootFolderService.All().Exists(r => r.Path.PathEquals(context.PropertyValue.ToString())); + return !_rootFolderService.All().Exists(r => r.Path.IsPathValid(PathValidationType.CurrentOs) && r.Path.PathEquals(context.PropertyValue.ToString())); } } }