This collects seven download-client fixes that were open as separate PRs, one qBittorrent state-mapping fix that had not been opened yet, and two integration fixes needed because two of the earlier fixes interact. Each is its own commit, applied in the order below, so any one of them can be dropped or cherry-picked on its own without touching the rest. qBittorrent, NZBGet and SABnzbd each get at least one fix.
Commits
| commit | original PR | issue | effect |
|---|---|---|---|
| 266ad2c | #868 | - | one circuit breaker per download-client type instead of one shared instance |
| 6f2b517 | #830 | - | one unreadable qBittorrent torrent no longer truncates the rest of the queue poll |
| 1cf3062 | #882 | - | a rejected submission now writes a DownloadFailed history row instead of vanishing |
| c6f8c5d | #906 | - | qBittorrent 409 (already downloading) is now a rejection, not a generic failure |
| d8ec8b7 | #926 | #898 | the four qBittorrent Advanced Settings now reach the client on add |
| 7c783ef | #922 | #900 | the Priority dropdown now offers the values the planners actually read |
| 6b4b00b | #950 | #951 | NZBGet failed-history entries warn once instead of on every poll |
| 1cc67a5 | new | - | qBittorrent 4.x pausedUP/pausedDL map the same as 5.x stoppedUP/stoppedDL |
| 5b1ef4a | integration | - | a rejected-release duplicate no longer writes a DownloadFailed row |
| 893964b | integration | - | Initial State Start now sends a definite false instead of nothing |
Per-fix detail
266ad2c, one circuit breaker per client type (originally #868)
AddDownloadClientHttpClients built a single circuit breaker and handed the same instance to all five download-client HttpClient registrations. Read, at a630572e9: DownloadClientRegistrationExtensions.cs constructed one breaker policy and passed it to every AddPolicyHandler call. Polly's circuit breaker is stateful, so three transient failures against one client could open the cir...
Automated Canary build