output/httpd: flush encoder after tag

Without the flush, ReadPage() may not return any data, or not all
data.  This may result in incomplete ddata the new "header" page,
corrupting streams with some encoders such as Vorbis.

Fixes #145
This commit is contained in:
Max Kellermann 2017-11-14 12:00:14 +01:00
parent aea37e46e3
commit 014f8cd693
2 changed files with 2 additions and 0 deletions

1
NEWS
View File

@ -12,6 +12,7 @@ ver 0.20.12 (not yet released)
- vorbis: default to quality 3 - vorbis: default to quality 3
* output * output
- fix hanging playback with soxr resampler - fix hanging playback with soxr resampler
- httpd: flush encoder after tag; fixes corrupt Vorbis stream
ver 0.20.11 (2017/10/18) ver 0.20.11 (2017/10/18)
* storage * storage

View File

@ -468,6 +468,7 @@ HttpdOutput::SendTag(const Tag &tag)
try { try {
encoder->SendTag(tag); encoder->SendTag(tag);
encoder->Flush();
} catch (const std::runtime_error &) { } catch (const std::runtime_error &) {
/* ignore */ /* ignore */
} }