diff --git a/src/NzbDrone.Core/Download/TrackedDownloads/DownloadMonitoringService.cs b/src/NzbDrone.Core/Download/TrackedDownloads/DownloadMonitoringService.cs index 22156255c..f708e7976 100644 --- a/src/NzbDrone.Core/Download/TrackedDownloads/DownloadMonitoringService.cs +++ b/src/NzbDrone.Core/Download/TrackedDownloads/DownloadMonitoringService.cs @@ -58,15 +58,17 @@ namespace NzbDrone.Core.Download.TrackedDownloads { var downloadClients = _downloadClientProvider.GetDownloadClients(); - var trackedDownload = new List(); + var trackedDownloads = new List(); foreach (var downloadClient in downloadClients) { var clientTrackedDownloads = ProcessClientDownloads(downloadClient); - trackedDownload.AddRange(clientTrackedDownloads.Where(c => c.State == TrackedDownloadStage.Downloading)); + + // Only track completed downloads if + trackedDownloads.AddRange(clientTrackedDownloads.Where(DownloadIsTrackable)); } - _eventAggregator.PublishEvent(new TrackedDownloadRefreshedEvent(trackedDownload)); + _eventAggregator.PublishEvent(new TrackedDownloadRefreshedEvent(trackedDownloads)); } finally { @@ -139,6 +141,23 @@ namespace NzbDrone.Core.Download.TrackedDownloads return trackedDownloads; } + private bool DownloadIsTrackable(TrackedDownload trackedDownload) + { + // If the download has already been imported or failed don't track it + if (trackedDownload.State != TrackedDownloadStage.Downloading) + { + return false; + } + + // If CDH is disabled and the download status is complete don't track it + if (!_configService.EnableCompletedDownloadHandling && trackedDownload.DownloadItem.Status == DownloadItemStatus.Completed) + { + return false; + } + + return true; + } + public void Execute(CheckForFinishedDownloadCommand message) { Refresh();