2004-01-28 20:02:12 -05:00
|
|
|
/* Icecast
|
|
|
|
*
|
|
|
|
* This program is distributed under the GNU General Public License, version 2.
|
|
|
|
* A copy of this license is included with this source.
|
|
|
|
*
|
|
|
|
* Copyright 2000-2004, Jack Moffitt <jack@xiph.org,
|
|
|
|
* Michael Smith <msmith@xiph.org>,
|
|
|
|
* oddsock <oddsock@xiph.org>,
|
|
|
|
* Karl Heyes <karl@xiph.org>
|
|
|
|
* and others (see AUTHORS for details).
|
|
|
|
*/
|
|
|
|
|
2003-07-20 21:58:54 -04:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include <config.h>
|
|
|
|
#endif
|
|
|
|
|
2003-03-05 08:03:35 -05:00
|
|
|
#include "event.h"
|
2003-07-20 21:58:54 -04:00
|
|
|
#include "cfgfile.h"
|
2004-01-26 17:42:22 -05:00
|
|
|
#include "yp.h"
|
2005-05-15 20:16:12 -04:00
|
|
|
#include "source.h"
|
2003-03-05 08:03:35 -05:00
|
|
|
|
|
|
|
#include "refbuf.h"
|
|
|
|
#include "client.h"
|
|
|
|
#include "logging.h"
|
2004-02-02 14:22:11 -05:00
|
|
|
#include "slave.h"
|
2007-08-13 17:33:27 -04:00
|
|
|
#include "fserve.h"
|
2007-08-15 22:13:18 -04:00
|
|
|
#include "stats.h"
|
2003-03-05 08:03:35 -05:00
|
|
|
|
|
|
|
#define CATMODULE "event"
|
|
|
|
|
|
|
|
void event_config_read(void *arg)
|
|
|
|
{
|
|
|
|
int ret;
|
|
|
|
ice_config_t *config;
|
|
|
|
ice_config_t new_config;
|
2003-03-14 21:10:19 -05:00
|
|
|
/* reread config file */
|
2003-03-05 08:03:35 -05:00
|
|
|
|
2005-04-20 18:34:54 -04:00
|
|
|
config = config_grab_config(); /* Both to get the lock, and to be able
|
2003-03-05 08:03:35 -05:00
|
|
|
to find out the config filename */
|
2005-08-16 12:56:24 -04:00
|
|
|
xmlSetGenericErrorFunc ("config", log_parse_failure);
|
2003-03-05 08:03:35 -05:00
|
|
|
ret = config_parse_file(config->config_filename, &new_config);
|
|
|
|
if(ret < 0) {
|
|
|
|
ERROR0("Error parsing config, not replacing existing config");
|
|
|
|
switch(ret) {
|
|
|
|
case CONFIG_EINSANE:
|
|
|
|
ERROR0("Config filename null or blank");
|
|
|
|
break;
|
|
|
|
case CONFIG_ENOROOT:
|
|
|
|
ERROR1("Root element not found in %s", config->config_filename);
|
|
|
|
break;
|
|
|
|
case CONFIG_EBADROOT:
|
|
|
|
ERROR1("Not an icecast2 config file: %s",
|
|
|
|
config->config_filename);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
ERROR1("Parse error in reading %s", config->config_filename);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
config_release_config();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
config_clear(config);
|
|
|
|
config_set_config(&new_config);
|
2007-08-15 22:13:18 -04:00
|
|
|
config = config_get_config_unlocked();
|
|
|
|
restart_logging (config);
|
|
|
|
yp_recheck_config (config);
|
|
|
|
fserve_recheck_mime_types (config);
|
|
|
|
stats_global (config);
|
2003-03-05 08:03:35 -05:00
|
|
|
config_release_config();
|
2007-08-11 13:44:45 -04:00
|
|
|
slave_recheck_all();
|
2003-03-05 08:03:35 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|