web: fix range request support

Do not let the web plugin overwrite the Content-Length header with the full file length since flask/werkzeug sets the requested range's/chunk's size when handling a range request.
This allows to play large audio/opus files using e.g. a browser/firefox or gstreamer/mopidy without making a reverse-proxy/nginx emulate range request support and hide range-related headers from the backend.
This commit is contained in:
Max Goltzsche 2023-12-20 00:49:34 +01:00
parent bcf180d14d
commit 6b929c6e72
No known key found for this signature in database
GPG key ID: 364FA5A62B410BA4
2 changed files with 2 additions and 1 deletions

View file

@ -336,7 +336,6 @@ def item_file(item_id):
response = flask.send_file(
item_path, as_attachment=True, download_name=safe_filename
)
response.headers["Content-Length"] = os.path.getsize(item_path)
return response

View file

@ -279,6 +279,8 @@ Bug fixes:
:bug:`4973`
* Fix bug regarding displaying tracks that have been changed not being
displayed unless the detail configuration is enabled.
* :doc:`/plugins/web`: Fix range request support, allowing to play large audio/
opus files using e.g. a browser/firefox or gstreamer/mopidy directly.
For plugin developers: