aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/output/httpd_output_plugin.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/output/httpd_output_plugin.c b/src/output/httpd_output_plugin.c
index e045e8b5a..6465b108c 100644
--- a/src/output/httpd_output_plugin.c
+++ b/src/output/httpd_output_plugin.c
@@ -402,8 +402,29 @@ httpd_output_tag(void *data, const struct tag *tag)
if (httpd->encoder->plugin->tag != NULL) {
/* embed encoder tags */
+ struct page *page;
+
+ /* flush the current stream, and end it */
+
+ encoder_flush(httpd->encoder, NULL);
+ httpd_output_encoder_to_clients(httpd);
+
+ /* send the tag to the encoder - which starts a new
+ stream now */
encoder_tag(httpd->encoder, tag, NULL);
+
+ /* the first page generated by the encoder will now be
+ used as the new "header" page, which is sent to all
+ new clients */
+
+ page = httpd_output_read_page(httpd);
+ if (page != NULL) {
+ if (httpd->header != NULL)
+ page_unref(httpd->header);
+ httpd->header = page;
+ httpd_output_broadcast_page(httpd, page);
+ }
} else {
/* use Icy-Metadata */