Skip to content

Failed to add nzb with " (or other non-ASCII charachters) in name #808

Description

@H3n-42

Summary

Listenarr fails to send NZB files to SABnzbd when the NZB filename contains double quotes and non-ASCII characters, due to a .NET ContentDispositionHeaderValue.EncodeAndQuoteMime ArgumentException on the multipart Content-Disposition header.

Environment

  • Listenarr version: 1.2.2
  • Install type: Docker
  • SABnzbd version: 4.5.5

Steps to Reproduce

  1. Configure SABnzbd as a download client in Listenarr.
  2. Grab an NZB with a subject like:
    (01/21) - Description - "Rebecca Yarros - Flammengeküsst 02 - Iron Flame - Flammengeküsst (Ungekürzt).par2" - 1,99 GB from DrunkenSlug (Prowlarr)

Example ASIN B0CN72SGM6
Example ISBN 9783844933482

  1. Attempt to send the prepared NZB to SABnzbd from Listenarr.

Actual Behavior

Listenarr throws:

listenarr  | 2026-08-10 12:15:52.421 +00:00 [INF] [Listenarr.Api.Features.Downloads.DownloadController] === SendToDownloadClient RECEIVED REQUEST ===
listenarr  | 2026-08-10 12:15:52.422 +00:00 [INF] [Listenarr.Api.Features.Downloads.DownloadController] Title: (01/21) - Description - "Rebecca Yarros - Flammengeküsst 02 - Iron Flame - Flammengeküsst (Ungekürzt).par2" - 1,99 GB
listenarr  | 2026-08-10 12:15:52.422 +00:00 [INF] [Listenarr.Api.Features.Downloads.DownloadController] Protocol: Usenet
listenarr  | 2026-08-10 12:15:52.422 +00:00 [INF] [Listenarr.Api.Features.Downloads.DownloadController] Source: DrunkenSlug (Prowlarr)
listenarr  | 2026-08-10 12:15:52.422 +00:00 [INF] [Listenarr.Application.Downloads.Submission.DownloadService] Preparing trusted download '(01/21) - Description - "Rebecca Yarros - Flammengeküsst 02 - Iron Flame - Flammengeküsst (Ungekürzt).par2" - 1,99 GB' using protocol Usenet, AudiobookId: 1
listenarr  | 2026-08-10 12:15:52.728 +00:00 [INF] [Listenarr.Application.Downloads.Submission.DownloadService] Processing as Usenet after server-side validation for '(01/21) - Description - "Rebecca Yarros - Flammengeküsst 02 - Iron Flame - Flammengeküsst (Ungekürzt).par2" - 1,99 GB'
listenarr  | 2026-08-10 12:15:52.728 +00:00 [INF] [Listenarr.Application.Downloads.Submission.DownloadClientSelector] Looking for NZB client. Found 1 enabled download clients: SABnzbd (sabnzbd)
listenarr  | 2026-08-10 12:15:52.728 +00:00 [INF] [Listenarr.Application.Downloads.Submission.DownloadClientSelector] Selected NZB client: SABnzbd (sabnzbd)
listenarr  | 2026-08-10 12:15:52.728 +00:00 [INF] [Listenarr.Application.Downloads.Submission.DownloadService] Auto-selected download client 1786306585203-ebswkjv23 for NZB
listenarr  | 2026-08-10 12:15:52.729 +00:00 [INF] [Listenarr.Application.Downloads.Submission.DownloadService] Sending to sabnzbd download client: SABnzbd
listenarr  | 2026-08-10 12:15:52.738 +00:00 [INF] [Listenarr.Application.Downloads.Submission.DownloadService] Created download record in database: 5ef8e3f2-ca86-4018-bd71-365a4b9e140c for '(01/21) - Description - "Rebecca Yarros - Flammengeküsst 02 - Iron Flame - Flammengeküsst (Ungekürzt).par2" - 1,99 GB'
listenarr  | 2026-08-10 12:15:52.738 +00:00 [INF] [Listenarr.Infrastructure.DownloadClients.Sabnzbd.SabnzbdAdapter] Sending prepared NZB to SABnzbd: (01/21) - Description - "Rebecca Yarros - Flammengeküsst 02 - Iron Flame - Flammengeküsst (Ungekürzt).par2" - 1,99 GB from DrunkenSlug (Prowlarr)
listenarr  | 2026-08-10 12:15:52.739 +00:00 [ERR] [Listenarr.Infrastructure.DownloadClients.Sabnzbd.SabnzbdAdapter] Failed to send NZB to SABnzbd
listenarr  | System.ArgumentException: The format of value '(01_21) - Description - "Rebecca Yarros - Flammengeküsst 02 - Iron Flame - Flammengeküsst (Ungekürzt).par2" - 1,99 GB.nzb' is invalid.
listenarr  |    at System.Net.Http.Headers.ContentDispositionHeaderValue.EncodeAndQuoteMime(String input)
listenarr  |    at System.Net.Http.Headers.ContentDispositionHeaderValue.SetName(String parameter, String value)
listenarr  |    at System.Net.Http.MultipartFormDataContent.AddInternal(HttpContent content, String name, String fileName)
listenarr  |    at Listenarr.Infrastructure.DownloadClients.Sabnzbd.SabnzbdAddWorkflow.AddAsync(DownloadClientConfiguration client, PreparedDownloadSubmission submission, CancellationToken ct) in /home/runner/work/Listenarr/Listenarr/listenarr.infrastructure/DownloadClients/Sabnzbd/SabnzbdAddWorkflow.cs:line 48
listenarr  | 2026-08-10 12:15:52.745 +00:00 [INF] [Listenarr.Application.Downloads.Submission.DownloadService] Removed provisional download 5ef8e3f2-ca86-4018-bd71-365a4b9e140c after client submission failed
listenarr  | 2026-08-10 12:15:52.745 +00:00 [WRN] [Listenarr.Api.Features.Downloads.DownloadController] Download client submission failed
listenarr  | Listenarr.Application.Common.DownloadClientSubmissionException: Failed to send the torrent to the download client.
listenarr  |  ---> System.ArgumentException: The format of value '(01_21) - Description - "Rebecca Yarros - Flammengeküsst 02 - Iron Flame - Flammengeküsst (Ungekürzt).par2" - 1,99 GB.nzb' is invalid.
listenarr  |    at System.Net.Http.Headers.ContentDispositionHeaderValue.EncodeAndQuoteMime(String input)
listenarr  |    at System.Net.Http.Headers.ContentDispositionHeaderValue.SetName(String parameter, String value)
listenarr  |    at System.Net.Http.MultipartFormDataContent.AddInternal(HttpContent content, String name, String fileName)
listenarr  |    at Listenarr.Infrastructure.DownloadClients.Sabnzbd.SabnzbdAddWorkflow.AddAsync(DownloadClientConfiguration client, PreparedDownloadSubmission submission, CancellationToken ct) in /home/runner/work/Listenarr/Listenarr/listenarr.infrastructure/DownloadClients/Sabnzbd/SabnzbdAddWorkflow.cs:line 48
listenarr  |    at Listenarr.Application.Downloads.Common.DownloadClientGateway.AddAsync(DownloadClientConfiguration client, PreparedDownloadSubmission submission, CancellationToken ct) in /home/runner/work/Listenarr/Listenarr/listenarr.application/Downloads/Common/DownloadClientGateway.cs:line 80
listenarr  |    at Listenarr.Application.Downloads.Submission.DownloadService.SendToDownloadClientAsync(TrustedDownloadCandidate candidate, String downloadClientId, Nullable`1 audiobookId) in /home/runner/work/Listenarr/Listenarr/listenarr.application/Downloads/Submission/DownloadService.cs:line 337
listenarr  |    --- End of inner exception stack trace ---
listenarr  |    at Listenarr.Application.Downloads.Submission.DownloadService.SendToDownloadClientAsync(TrustedDownloadCandidate candidate, String downloadClientId, Nullable`1 audiobookId) in /home/runner/work/Listenarr/Listenarr/listenarr.application/Downloads/Submission/DownloadService.cs:line 357
listenarr  |    at Listenarr.Api.Features.Downloads.DownloadController.SendToDownloadClient(SendDownloadRequest request) in /home/runner/work/Listenarr/Listenarr/listenarr.api/Features/Downloads/DownloadController.cs:line 90

The request to SABnzbd is never sent; the provisional download is removed.

Possible fix

Sanitize the filename (e.g. strip or use known metadata as replacement)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions