mirror of
https://gitlab.xiph.org/xiph/icecast-server.git
synced 2025-02-02 15:07:36 -05:00
Add checks for whether a source is active
svn path=/trunk/icecast/; revision=5843
This commit is contained in:
parent
ebf6603c07
commit
6d969934f5
17
src/admin.c
17
src/admin.c
@ -180,20 +180,21 @@ xmlDocPtr admin_build_sourcelist(char *current_source)
|
||||
node = avl_get_first(global.source_tree);
|
||||
while(node) {
|
||||
source = (source_t *)node->key;
|
||||
if (source->running)
|
||||
{
|
||||
srcnode = xmlNewChild(xmlnode, NULL, "source", NULL);
|
||||
xmlSetProp(srcnode, "mount", source->mount);
|
||||
|
||||
xmlNewChild(srcnode, NULL, "fallback",
|
||||
(source->fallback_mount != NULL)?
|
||||
source->fallback_mount:"");
|
||||
memset(buf, '\000', sizeof(buf));
|
||||
snprintf(buf, sizeof(buf)-1, "%ld", source->listeners);
|
||||
snprintf(buf, sizeof(buf), "%ld", source->listeners);
|
||||
xmlNewChild(srcnode, NULL, "listeners", buf);
|
||||
memset(buf, '\000', sizeof(buf));
|
||||
snprintf(buf, sizeof(buf)-1, "%ld", now - source->con->con_time);
|
||||
snprintf(buf, sizeof(buf), "%ld", now - source->con->con_time);
|
||||
xmlNewChild(srcnode, NULL, "Connected", buf);
|
||||
xmlNewChild(srcnode, NULL, "Format",
|
||||
source->format->format_description);
|
||||
}
|
||||
node = avl_get_next(node);
|
||||
}
|
||||
return(doc);
|
||||
@ -288,6 +289,14 @@ void admin_handle_request(client_t *client, char *uri)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (source->running == 0)
|
||||
{
|
||||
INFO2("Received admin command %s on unavailable mount \"%s\"",
|
||||
command_string, mount);
|
||||
avl_tree_unlock (global.source_tree);
|
||||
client_send_400 (client, "Source is not available");
|
||||
return;
|
||||
}
|
||||
INFO2("Received admin command %s on mount \"%s\"",
|
||||
command_string, mount);
|
||||
admin_handle_mount_request(client, source, command);
|
||||
|
@ -884,6 +884,13 @@ static void _handle_get_request(connection_t *con,
|
||||
avl_tree_unlock(global.source_tree);
|
||||
return;
|
||||
}
|
||||
if (source->running == 0)
|
||||
{
|
||||
avl_tree_unlock(global.source_tree);
|
||||
DEBUG0("inactive source, client dropped");
|
||||
client_send_404(client, "This mount is unavailable.");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Check for any required authentication first */
|
||||
if(source->authenticator != NULL) {
|
||||
|
Loading…
Reference in New Issue
Block a user