diff --git a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs index 57b20dbe2..659d9d36b 100644 --- a/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs +++ b/src/NzbDrone.Core/Download/Clients/Sabnzbd/Sabnzbd.cs @@ -273,6 +273,64 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd failures.AddIfNotNull(TestCategory()); } + private bool HasVersion(int major, int minor, int patch = 0, string candidate = null) + { + candidate = candidate ?? string.Empty; + + var version = _proxy.GetVersion(Settings); + var parsed = VersionRegex.Match(version); + + if (!parsed.Success) + { + return false; + } + + var actualMajor = Convert.ToInt32(parsed.Groups["major"].Value); + var actualMinor = Convert.ToInt32(parsed.Groups["minor"].Value); + var actualPatch = Convert.ToInt32(parsed.Groups["patch"].Value.Replace("x", "")); + var actualCandidate = parsed.Groups["candidate"].Value.ToUpper(); + + if (actualMajor > major) + { + return true; + } + else if (actualMajor < major) + { + return false; + } + + if (actualMinor > minor) + { + return true; + } + else if (actualMinor < minor) + { + return false; + } + + if (actualPatch > patch) + { + return true; + } + else if (actualPatch < patch) + { + return false; + } + + if (actualCandidate.IsNullOrWhiteSpace()) + { + return true; + } + else if (candidate.IsNullOrWhiteSpace()) + { + return false; + } + else + { + return actualCandidate.CompareTo(candidate) > 0; + } + } + private ValidationFailure TestConnectionAndVersion() { try @@ -332,7 +390,7 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd private ValidationFailure TestGlobalConfig() { var config = _proxy.GetConfig(Settings); - if (config.Misc.pre_check) + if (config.Misc.pre_check && !HasVersion(1, 1)) { return new NzbDroneValidationFailure("", "Disable 'Check before download' option in Sabnbzd") { @@ -417,4 +475,4 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd return null; } } -} \ No newline at end of file +}