HTTP Error 400 when downloading

Issue description:

I’m not able to download tracks from my Navidrome server. The tracks play fine, but when I try to add them to the permanent cache they show up with “HTTP Error 400”. This happens for any track in my library.

Logs:

Upload description: tim.a.9707

Additional information:

 
In the Symfonium debug logs, it looks like at the time of the download it makes a getSong.view request (which succeed) followed by a stream.view request with the 400 error.
When I view the HTTP logs for my server, I can see the getSong.view request, the subsequent requests don’t have the stream.view url:
192.168.1.1 home.xxx.org - [08/Nov/2025:22:18:16 -0600] “GET /music/rest/getSong.view?id=gPn59H4mQoCQa9MAVoX908&u=REDACTED&t=REDACTED&s=REDACTED&v=1.13.0&c=Symfonium&f=json HTTP/2.0” 200 730 “-” “Symfonium/13.5.0b (Linux;Android 16)”
192.168.1.1 - - [08/Nov/2025:22:18:16 -0600] “GET HTTP/2.0” 400 345 “-” “-”
192.168.1.1 home.xxx.org - [08/Nov/2025:22:18:16 -0600] “PRI * HTTP/2.0” 100 1449 “-” “-”

If I un-redact the stream.view request and paste it in a browser, it downloads the song. I can also download songs from my server using DSub.
 

Reproduction steps:

 
Connect to Navidrome server > Select a song > More Actions > Offline cache and download > Add to permanent cache
 

Media provider:

Subsonic

Screenshots:

     

Do not post extract of the logs without redacting you expose your IP and server …

Anyway something returns error 400, if it does not reach Navidrome then it’s your proxy, check it’s log to see why and fix that.

The http server whose logs I posted is doing the proxying. So it does not appear to me that Symfonium is making valid requests to the proxy. And as I mentioned, identical requests made by other apps work as expexted.

And what is invalid then ? :wink:

It works for all the other users, there’s nothing fancy here.

The two requests that come at the time Symfonium’s logs report making a stream.view request, but which contain no urls.

Symfonium can’t send calls without headers, that second call is your proxy redirecting or something else in the middle.

I’ve been poking at the logs and I suspect that Symfonium is sending an empty Accept-Encoding header value in a HTTP2 request, and that my webserver is rejecting this as invalid.

When you find any RFC that says it’s mandatory I’ll enforce one, else since it’s a download endpoint it’s perfectly normal to omit it, specially since it prevent issues on a couple of servers.

This is an actual RFC :wink:

An Accept-Encoding header field with a field value that is empty implies that the user agent does not want any content coding in response

Looks like this is a bug in the http server that I am using. Thanks, you have been most unhelpful and dismissive.

That’s one point of view.

The actual fact, is that you have instant answers on a Sunday to help you fix your proxy configuration, something that is 100% outside of Symfonium support scope …

All that while you repeated, it’s Symfonium fault, it can’t be something else …

So reality is quite different from what you think it is …

1 Like