1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2025-05-18 00:58:26 -04:00

Fix: Always export <metadata> in stats.xml

This commit is contained in:
Philipp Schafft 2014-12-18 10:24:15 +00:00
parent 4a0c399bf3
commit c5bd8ad281

View File

@ -96,6 +96,7 @@ static stats_node_t *_find_node(avl_tree *tree, const char *name);
static stats_source_t *_find_source(avl_tree *tree, const char *source);
static void _free_event(stats_event_t *event);
static stats_event_t *_get_event_from_queue(event_queue_t *queue);
static void __add_metadata(xmlNodePtr node, const char *tag);
/* simple helper function for creating an event */
@ -834,9 +835,14 @@ static xmlNodePtr _dump_stats_to_doc (xmlNodePtr root, const char *show_mount, i
while (avlnode)
{
stats_source_t *source = (stats_source_t *)avlnode->key;
if (source->hidden <= hidden &&
(show_mount == NULL || strcmp (show_mount, source->source) == 0))
{
xmlNodePtr metadata;
source_t *source_real;
int i;
avl_node *avlnode2 = avl_get_first (source->stats_tree);
xmlNodePtr xmlnode = xmlNewTextChild (root, NULL, XMLSTR("source"), NULL);
@ -849,6 +855,14 @@ static xmlNodePtr _dump_stats_to_doc (xmlNodePtr root, const char *show_mount, i
xmlNewTextChild (xmlnode, NULL, XMLSTR(stat->name), XMLSTR(stat->value));
avlnode2 = avl_get_next (avlnode2);
}
metadata = xmlNewTextChild(xmlnode, NULL, XMLSTR("metadata"), NULL);
avl_tree_rlock(global.source_tree);
source_real = source_find_mount_raw(source->source);
for (i = 0; i < source_real->format->vc.comments; i++)
__add_metadata(metadata, source_real->format->vc.user_comments[i]);
avl_tree_unlock(global.source_tree);
}
avlnode = avl_get_next (avlnode);
}
@ -1022,13 +1036,8 @@ xmlDocPtr stats_get_xml(int show_hidden, const char *show_mount, operation_mode
node = _dump_stats_to_doc (node, show_mount, show_hidden);
if (show_mount && node) {
xmlNodePtr metadata = xmlNewTextChild(node, NULL, XMLSTR("metadata"), NULL);
int i;
avl_tree_rlock(global.source_tree);
source = source_find_mount_raw(show_mount);
for (i = 0; i < source->format->vc.comments; i++)
__add_metadata(metadata, source->format->vc.user_comments[i]);
admin_add_listeners_to_mount(source, node, mode);
avl_tree_unlock(global.source_tree);
}