diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/output/httpd_output_plugin.c | 21 |
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 */ |