From c6a0b4cc8bd2d834ba8ef04370b8e13b6205ec64 Mon Sep 17 00:00:00 2001 From: Karl Heyes Date: Sat, 19 Jul 2008 01:57:53 +0000 Subject: [PATCH] 2 on-demand relay fixups. We prevent a failed relay from restarting too quickly but don't prevent connecting listeners from getting to the source_t during that time. Drop the on-demand status in the source_t during this period so listeners are rejected. The setting is reset from relay eventually. Relays without matching mount sections had no stats initially. svn path=/icecast/trunk/icecast/; revision=15122 --- src/slave.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/slave.c b/src/slave.c index cb792ac3..71a44cf9 100644 --- a/src/slave.c +++ b/src/slave.c @@ -367,6 +367,7 @@ static void *start_relay_stream (void *arg) source_clear_source (relay->source); /* cleanup relay, but prevent this relay from starting up again too soon */ + relay->source->on_demand = 0; relay->start = time(NULL) + max_interval; relay->cleanup = 1; @@ -391,7 +392,15 @@ static void check_relay_stream (relay_server *relay) { DEBUG1("Adding relay source at mountpoint \"%s\"", relay->localmount); if (relay->on_demand) + { + ice_config_t *config = config_get_config (); + mount_proxy *mountinfo = config_find_mount (config, relay->localmount); + if (mountinfo == NULL) + source_update_settings (config, relay->source, mountinfo); + config_release_config (); + stats_event (relay->localmount, "listeners", "0"); slave_update_all_mounts(); + } } else WARN1 ("new relay but source \"%s\" already exists", relay->localmount);