[xiph-commits] r15463 - in icecast/branches/kh/icecast: . src win32

karl at svn.xiph.org karl at svn.xiph.org
Tue Oct 28 19:57:06 PDT 2008


Author: karl
Date: 2008-10-28 19:57:06 -0700 (Tue, 28 Oct 2008)
New Revision: 15463

Modified:
   icecast/branches/kh/icecast/NEWS
   icecast/branches/kh/icecast/config.h.vc6
   icecast/branches/kh/icecast/configure.in
   icecast/branches/kh/icecast/src/admin.c
   icecast/branches/kh/icecast/src/cfgfile.c
   icecast/branches/kh/icecast/src/cfgfile.h
   icecast/branches/kh/icecast/src/connection.c
   icecast/branches/kh/icecast/src/fserve.c
   icecast/branches/kh/icecast/src/logging.c
   icecast/branches/kh/icecast/src/main.c
   icecast/branches/kh/icecast/src/source.h
   icecast/branches/kh/icecast/src/stats.c
   icecast/branches/kh/icecast/src/stats.h
   icecast/branches/kh/icecast/win32/Icecast2winDlg.cpp
   icecast/branches/kh/icecast/win32/icecast2.iss
Log:
check-in changes for kh3, bugfix for streamlist for slaves and some on-going
internal code cleanup


Modified: icecast/branches/kh/icecast/NEWS
===================================================================
--- icecast/branches/kh/icecast/NEWS	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/NEWS	2008-10-29 02:57:06 UTC (rev 15463)
@@ -15,6 +15,16 @@
 any extra tags are show in the conf/icecast.xml.dist file
 
 
+2.3.2-kh3
+. fixed master not informing slaves of streams bug. caused by missed setting in
+  the kh2 stats update
+. more xml checks for badly formed xml files.
+. log files can now be sections not just a single filename ie <errorlog> can
+  contain <name> <archive> <display> and <level>, accesslog can contain <name>
+  <ip> and <archive>, playlistlog can contain <name> <archive> <display>. In each
+  case, name is a filename, archive is a true/false setting for using timestamps
+  on a reopened file, display is the number of lines to show in the admin page.
+
 2.3.2-kh2
 . more stats work. Clients are now processed as needed instead of a dedicated
   thread per stats client. 

Modified: icecast/branches/kh/icecast/config.h.vc6
===================================================================
--- icecast/branches/kh/icecast/config.h.vc6	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/config.h.vc6	2008-10-29 02:57:06 UTC (rev 15463)
@@ -95,7 +95,7 @@
 #define PACKAGE_NAME "Icecast"
 
 /* Version number of package */
-#define VERSION "2.3.2-kh2"
+#define VERSION "2.3.2-kh3"
 
 /* Define to the version of this package. */
 #define PACKAGE_VERSION VERSION

Modified: icecast/branches/kh/icecast/configure.in
===================================================================
--- icecast/branches/kh/icecast/configure.in	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/configure.in	2008-10-29 02:57:06 UTC (rev 15463)
@@ -1,4 +1,4 @@
-AC_INIT([Icecast], [2.3.2-kh2], [karl at xiph.org])
+AC_INIT([Icecast], [2.3.2-kh3], [karl at xiph.org])
 
 AC_PREREQ(2.59)
 AC_CONFIG_SRCDIR(src/main.c)

Modified: icecast/branches/kh/icecast/src/admin.c
===================================================================
--- icecast/branches/kh/icecast/src/admin.c	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/src/admin.c	2008-10-29 02:57:06 UTC (rev 15463)
@@ -1122,7 +1122,7 @@
 
     show_mount = httpp_get_query_param (client->parser, "mount");
 
-    stats_get_xml(&doc, STATS_ALL, show_mount);
+    doc = stats_get_xml (STATS_ALL, show_mount);
     admin_send_response (doc, client, response, filename);
     xmlFreeDoc(doc);
 }

Modified: icecast/branches/kh/icecast/src/cfgfile.c
===================================================================
--- icecast/branches/kh/icecast/src/cfgfile.c	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/src/cfgfile.c	2008-10-29 02:57:06 UTC (rev 15463)
@@ -100,72 +100,84 @@
  */
 int config_get_bool (xmlNodePtr node, void *x)
 {   
-    char *str = (char *)xmlNodeListGetString (node->doc, node->xmlChildrenNode, 1);
-    if (str == NULL)
-        return 1;
-    if (strcasecmp (str, "true") == 0)
-        *(int*)x = 1;
-    else
-        if (strcasecmp (str, "yes") == 0)
+    if (xmlNodeIsText (node))
+    {
+        char *str = (char *)xmlNodeListGetString (node->doc, node->xmlChildrenNode, 1);
+        if (str == NULL)
+            return 1;
+        if (strcasecmp (str, "true") == 0)
             *(int*)x = 1;
         else
-            *(int*)x = strtol (str, NULL, 0)==0 ? 0 : 1;
-    xmlFree (str);
+            if (strcasecmp (str, "yes") == 0)
+                *(int*)x = 1;
+            else
+                *(int*)x = strtol (str, NULL, 0)==0 ? 0 : 1;
+        xmlFree (str);
+    }
     return 0;
 }
 
 int config_get_str (xmlNodePtr node, void *x)
 {
-    xmlChar *str = xmlNodeListGetString (node->doc, node->xmlChildrenNode, 1);
-    xmlChar *p = *(xmlChar**)x;
-    if (str == NULL)
-        return 1;
-    if (p)
-        xmlFree (p);
-    *(xmlChar **)x = str;
+    if (xmlIsBlankNode (node) == 0)
+    {
+        xmlChar *str = xmlNodeListGetString (node->doc, node->xmlChildrenNode, 1);
+        xmlChar *p = *(xmlChar**)x;
+        if (str == NULL)
+            return 1;
+        if (p)
+            xmlFree (p);
+        *(xmlChar **)x = str;
+    }
     return 0;
 }
 
 int config_get_int (xmlNodePtr node, void *x)
 {
-    xmlChar *str = xmlNodeListGetString (node->doc, node->xmlChildrenNode, 1);
-    if (str == NULL)
-        return 1;
-    *(int*)x = strtol ((char*)str, NULL, 0);
-    xmlFree (str);
+    if (xmlIsBlankNode (node) == 0)
+    {
+        xmlChar *str = xmlNodeListGetString (node->doc, node->xmlChildrenNode, 1);
+        if (str == NULL)
+            return 1;
+        *(int*)x = strtol ((char*)str, NULL, 0);
+        xmlFree (str);
+    }
     return 0;
 }
 
 int config_get_bitrate (xmlNodePtr node, void *x)
 {
-    xmlChar *str = xmlNodeListGetString (node->doc, node->xmlChildrenNode, 1);
-    int64_t *p = (int64_t*)x;
-    char metric = '\0';
+    if (xmlIsBlankNode (node) == 0)
+    {
+        xmlChar *str = xmlNodeListGetString (node->doc, node->xmlChildrenNode, 1);
+        int64_t *p = (int64_t*)x;
+        char metric = '\0';
 
-    if (str == NULL)
-        return 1;
-    sscanf ((char*)str, "%"SCNd64 "%c", p, &metric);
-    if (metric == 'k' || metric == 'K')
-        (*p) *= 1024;
-    if (metric == 'm' || metric == 'M')
-        (*p) *= 1024*1024;
-    xmlFree (str);
+        if (str == NULL)
+            return 1;
+        sscanf ((char*)str, "%"SCNd64 "%c", p, &metric);
+        if (metric == 'k' || metric == 'K')
+            (*p) *= 1024;
+        if (metric == 'm' || metric == 'M')
+            (*p) *= 1024*1024;
+        xmlFree (str);
+    }
     return 0;
 }
 
 
 int parse_xml_tags (xmlNodePtr parent, const struct cfg_tag *args)
 {
-    int ret = 0;
+    int ret = 0, seen_element = 0;
     xmlNodePtr node = parent->xmlChildrenNode;
 
     for (; node != NULL && ret == 0; node = node->next)
     {
         const struct cfg_tag *argp;
 
-        if (xmlIsBlankNode (node) || strcmp ((char*)node->name, "comment") == 0 ||
-                strcmp ((char*)node->name, "text") == 0)
+        if (xmlIsBlankNode (node) || node->type != XML_ELEMENT_NODE)
             continue;
+        seen_element = 1;
         argp = args;
         while (argp->name)
         {
@@ -174,6 +186,12 @@
                 ret = argp->retrieve (node, argp->storage);
                 if (ret > 0)
                 {
+                    if (ret == 2)
+                    {
+                        argp++;
+                        ret = 0;
+                        continue;
+                    }
                     xmlParserWarning (NULL, "skipping element \"%s\" parsing \"%s\"\n", node->name, parent->name);
                     ret = 0;
                 }
@@ -184,6 +202,8 @@
         if (argp->name == NULL)
             WARN2 ("unknown element \"%s\" parsing \"%s\"", node->name, parent->name);
     }
+    if (ret == 0 && seen_element == 0)
+        return 2;
     return ret;
 }
 
@@ -301,10 +321,10 @@
     if (c->banfile) xmlFree(c->banfile);
     if (c->allowfile) xmlFree (c->allowfile);
     if (c->agentfile) xmlFree (c->agentfile);
-    if (c->playlist_log) xmlFree(c->playlist_log);
-    if (c->access_log) xmlFree(c->access_log);
-    if (c->error_log) xmlFree(c->error_log);
-    if (c->access_log_exclude_ext) xmlFree (c->access_log_exclude_ext);
+    if (c->playlist_log.name) xmlFree(c->playlist_log.name);
+    if (c->access_log.name) xmlFree(c->access_log.name);
+    if (c->error_log.name) xmlFree(c->error_log.name);
+    if (c->access_log.exclude_ext) xmlFree (c->access_log.exclude_ext);
     if (c->shoutcast_mount) xmlFree(c->shoutcast_mount);
 
     while ((c->listen_sock = config_clear_listener (c->listen_sock)))
@@ -471,11 +491,11 @@
     configuration->log_dir = (char *)xmlCharStrdup (CONFIG_DEFAULT_LOG_DIR);
     configuration->webroot_dir = (char *)xmlCharStrdup (CONFIG_DEFAULT_WEBROOT_DIR);
     configuration->adminroot_dir = (char *)xmlCharStrdup (CONFIG_DEFAULT_ADMINROOT_DIR);
-    configuration->playlist_log = (char *)xmlCharStrdup (CONFIG_DEFAULT_PLAYLIST_LOG);
-    configuration->access_log = (char *)xmlCharStrdup (CONFIG_DEFAULT_ACCESS_LOG);
-    configuration->access_log_ip = 1;
-    configuration->error_log = (char *)xmlCharStrdup (CONFIG_DEFAULT_ERROR_LOG);
-    configuration->loglevel = CONFIG_DEFAULT_LOG_LEVEL;
+    configuration->playlist_log.name = (char *)xmlCharStrdup (CONFIG_DEFAULT_PLAYLIST_LOG);
+    configuration->access_log.name = (char *)xmlCharStrdup (CONFIG_DEFAULT_ACCESS_LOG);
+    configuration->access_log.log_ip = 1;
+    configuration->error_log.name = (char *)xmlCharStrdup (CONFIG_DEFAULT_ERROR_LOG);
+    configuration->error_log.level = CONFIG_DEFAULT_LOG_LEVEL;
     configuration->chroot = CONFIG_DEFAULT_CHROOT;
     configuration->chuid = CONFIG_DEFAULT_CHUID;
     configuration->user = NULL;
@@ -568,34 +588,93 @@
     return 0;
 }
 
+static int _parse_accesslog (xmlNodePtr node, void *arg)
+{
+    access_log *log = arg;
+    struct cfg_tag icecast_tags[] =
+    {
+        { "name",           config_get_str,     &log->name },
+        { "ip",             config_get_bool,    &log->log_ip },
+        { "archive",        config_get_bool,    &log->archive },
+        { "exclude_ext",    config_get_str,     &log->exclude_ext },
+        { "display",        config_get_int,     &log->display },
+        { NULL, NULL, NULL }
+    };
+
+    return parse_xml_tags (node, icecast_tags);
+}
+
+static int _parse_errorlog (xmlNodePtr node, void *arg)
+{
+    error_log *log = arg;
+    struct cfg_tag icecast_tags[] =
+    {
+        { "name",           config_get_str,     &log->name },
+        { "archive",        config_get_bool,    &log->archive },
+        { "display",        config_get_int,     &log->display },
+        { "level",          config_get_int,     &log->level },
+        { NULL, NULL, NULL }
+    };
+
+    return parse_xml_tags (node, icecast_tags);
+}
+
+static int _parse_playlistlog (xmlNodePtr node, void *arg)
+{
+    playlist_log *log = arg;
+    struct cfg_tag icecast_tags[] =
+    {
+        { "name",           config_get_str,     &log->name },
+        { "archive",        config_get_bool,    &log->archive },
+        { "display",        config_get_int,     &log->display },
+        { NULL, NULL, NULL }
+    };
+
+    return parse_xml_tags (node, icecast_tags);
+}
+
 static int _parse_logging (xmlNodePtr node, void *arg)
 {
     ice_config_t *config = arg;
+    int old_trigger_size = -1, old_archive = -1;
     struct cfg_tag icecast_tags[] =
     {
-        { "accesslog",      config_get_str,     &config->access_log },
-        { "accesslog_ip",   config_get_bool,    &config->access_log_ip },
+        { "accesslog",      _parse_accesslog,   &config->access_log },
+        { "errorlog",       _parse_errorlog,    &config->error_log },
+        { "playlistlog",    _parse_playlistlog, &config->playlist_log },
+        { "accesslog",      config_get_str,     &config->access_log.name },
+        { "accesslog_ip",   config_get_bool,    &config->access_log.log_ip },
         { "accesslog_exclude_ext",
-                            config_get_str,     &config->access_log_exclude_ext },
+                            config_get_str,     &config->access_log.exclude_ext },
         { "accesslog_lines",
-                            config_get_int,     &config->access_log_lines },
+                            config_get_int,     &config->access_log.display },
         { "errorlog",       config_get_str,     &config->error_log },
-        { "errorlog_lines", config_get_int,     &config->error_log_lines },
+        { "errorlog_lines", config_get_int,     &config->error_log.display },
+        { "loglevel",       config_get_int,     &config->error_log.level },
         { "playlistlog",    config_get_str,     &config->playlist_log },
         { "playlistlog_lines",
-                            config_get_int,     &config->playlist_log_lines },
-        { "logsize",        config_get_int,     &config->logsize },
-        { "loglevel",       config_get_int,     &config->loglevel },
-        { "logarchive",     config_get_bool,    &config->logarchive },
+                            config_get_int,     &config->playlist_log.display },
+        { "logsize",        config_get_int,     &old_trigger_size },
+        { "logarchive",     config_get_bool,    &old_archive },
         { NULL, NULL, NULL }
     };
 
-    config->access_log_lines = 100;
-    config->error_log_lines = 100;
-    config->playlist_log_lines = 10;
+    config->access_log.display = 100;
+    config->error_log.display = 100;
+    config->playlist_log.display = 10;
 
     if (parse_xml_tags (node, icecast_tags))
         return -1;
+    if (old_trigger_size > 0)
+    {
+        config->error_log.trigger_size  = old_trigger_size;
+        config->access_log.trigger_size = old_trigger_size;
+    }
+    if (old_archive > 0)
+    {
+        config->error_log.archive  = old_archive;
+        config->access_log.archive = old_archive;
+    }
     return 0;
 }
 

Modified: icecast/branches/kh/icecast/src/cfgfile.h
===================================================================
--- icecast/branches/kh/icecast/src/cfgfile.h	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/src/cfgfile.h	2008-10-29 02:57:06 UTC (rev 15463)
@@ -140,6 +140,33 @@
     char *password;
 } ice_master_details;
 
+typedef struct
+{
+    char *name;
+    int log_ip;
+    int archive;
+    int display;
+    int trigger_size;
+    char *exclude_ext;
+} access_log;
+
+typedef struct
+{
+    char *name;
+    int archive;
+    int display;
+    int trigger_size;
+    int level;
+} error_log;
+
+typedef struct
+{
+    char *name;
+    int archive;
+    int display;
+    int trigger_size;
+} playlist_log;
+
 typedef struct ice_config_tag
 {
     char *config_filename;
@@ -207,17 +234,9 @@
     aliases *aliases;
     unsigned slaves_count;
 
-    char *access_log;
-    int access_log_ip;
-    int access_log_lines;
-    char *access_log_exclude_ext;
-    char *error_log;
-    int error_log_lines;
-    char *playlist_log;
-    int playlist_log_lines;
-    int loglevel;
-    int logsize;
-    int logarchive;
+    access_log      access_log;
+    error_log       error_log;
+    playlist_log    playlist_log;
 
     int chroot;
     int chuid;

Modified: icecast/branches/kh/icecast/src/connection.c
===================================================================
--- icecast/branches/kh/icecast/src/connection.c	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/src/connection.c	2008-10-29 02:57:06 UTC (rev 15463)
@@ -1137,7 +1137,7 @@
 static void check_for_filtering (ice_config_t *config, client_t *client)
 {
     const char *uri = httpp_getvar (client->parser, HTTPP_VAR_URI);
-    char *pattern = config->access_log_exclude_ext;
+    char *pattern = config->access_log.exclude_ext;
     char *extension = strrchr (uri, '.');
 
     if (extension == NULL || uri == NULL || pattern == NULL)

Modified: icecast/branches/kh/icecast/src/fserve.c
===================================================================
--- icecast/branches/kh/icecast/src/fserve.c	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/src/fserve.c	2008-10-29 02:57:06 UTC (rev 15463)
@@ -500,7 +500,7 @@
         char *eol = strrchr (reference, '.');
         if (eol)
             *eol = '\0';
-        stats_get_xml (&doc, 0, reference);
+        doc = stats_get_xml (0, reference);
         free (reference);
         admin_send_response (doc, httpclient, XSLT, "xspf.xsl");
         xmlFreeDoc(doc);

Modified: icecast/branches/kh/icecast/src/logging.c
===================================================================
--- icecast/branches/kh/icecast/src/logging.c	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/src/logging.c	2008-10-29 02:57:06 UTC (rev 15463)
@@ -150,7 +150,7 @@
         user_agent = "-";
 
     config = config_get_config();
-    if (config->access_log_ip)
+    if (config->access_log.log_ip)
         ip = client->con->ip;
     config_release_config ();
 #ifdef HAVE_LOG_DIRECT_KEEP
@@ -218,37 +218,37 @@
 
 void restart_logging (ice_config_t *config)
 {
-    if (strcmp (config->error_log, "-"))
+    if (strcmp (config->error_log.name, "-"))
     {
         char fn_error[FILENAME_MAX];
-        snprintf (fn_error, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->error_log);
+        snprintf (fn_error, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->error_log.name);
         log_set_filename (errorlog, fn_error);
-        log_set_level (errorlog, config->loglevel);
-        log_set_trigger (errorlog, config->logsize);
-        log_set_lines_kept (errorlog, config->error_log_lines);
-        log_set_archive_timestamp(errorlog, config->logarchive);
+        log_set_level (errorlog, config->error_log.level);
+        log_set_trigger (errorlog, config->error_log.trigger_size);
+        log_set_lines_kept (errorlog, config->error_log.display);
+        log_set_archive_timestamp(errorlog, config->error_log.archive);
         log_reopen (errorlog);
     }
 
-    if (strcmp (config->access_log, "-"))
+    if (strcmp (config->access_log.name, "-"))
     {
         char fn_error[FILENAME_MAX];
-        snprintf (fn_error, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->access_log);
+        snprintf (fn_error, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->access_log.name);
         log_set_filename (accesslog, fn_error);
-        log_set_trigger (accesslog, config->logsize);
-        log_set_lines_kept (accesslog, config->access_log_lines);
-        log_set_archive_timestamp (accesslog, config->logarchive);
+        log_set_trigger (accesslog, config->access_log.trigger_size);
+        log_set_lines_kept (accesslog, config->access_log.display);
+        log_set_archive_timestamp (accesslog, config->access_log.archive);
         log_reopen (accesslog);
     }
 
-    if (config->playlist_log)
+    if (config->playlist_log.name)
     {
         char fn_error[FILENAME_MAX];
-        snprintf (fn_error, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->playlist_log);
+        snprintf (fn_error, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->playlist_log.name);
         log_set_filename (playlistlog, fn_error);
-        log_set_trigger (playlistlog, config->logsize);
-        log_set_lines_kept (playlistlog, config->playlist_log_lines);
-        log_set_archive_timestamp (playlistlog, config->logarchive);
+        log_set_trigger (playlistlog, config->playlist_log.trigger_size);
+        log_set_lines_kept (playlistlog, config->playlist_log.display);
+        log_set_archive_timestamp (playlistlog, config->playlist_log.archive);
         log_reopen (playlistlog);
     }
 }

Modified: icecast/branches/kh/icecast/src/main.c
===================================================================
--- icecast/branches/kh/icecast/src/main.c	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/src/main.c	2008-10-29 02:57:06 UTC (rev 15463)
@@ -207,13 +207,13 @@
 
     ice_config_t *config = config_get_config_unlocked();
 
-    if(strcmp(config->error_log, "-")) {
-        snprintf(fn_error, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->error_log);
+    if(strcmp(config->error_log.name, "-")) {
+        snprintf(fn_error, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->error_log.name);
         errorlog = log_open(fn_error);
         log_to_stderr = 0;
-        if (config->logsize)
-            log_set_trigger (errorlog, config->logsize);
-        log_set_archive_timestamp(errorlog, config->logarchive);
+        if (config->error_log.trigger_size)
+            log_set_trigger (errorlog, config->error_log.trigger_size);
+        log_set_archive_timestamp(errorlog, config->error_log.archive);
     } else {
         errorlog = log_open_file(stderr);
         log_to_stderr = 1;
@@ -227,15 +227,15 @@
                 strerror(errno));
         _fatal_error(buf);
     }
-    log_set_level(errorlog, config->loglevel);
+    log_set_level(errorlog, config->error_log.level);
 
-    if(strcmp(config->access_log, "-")) {
-        snprintf(fn_access, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->access_log);
+    if(strcmp(config->access_log.name, "-")) {
+        snprintf(fn_access, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->access_log.name);
         accesslog = log_open(fn_access);
         log_to_stderr = 0;
-        if (config->logsize)
-            log_set_trigger (accesslog, config->logsize);
-        log_set_archive_timestamp(accesslog, config->logarchive);
+        if (config->access_log.trigger_size)
+            log_set_trigger (accesslog, config->access_log.trigger_size);
+        log_set_archive_timestamp(accesslog, config->access_log.archive);
     } else {
         accesslog = log_open_file(stderr);
         log_to_stderr = 1;
@@ -250,8 +250,8 @@
         _fatal_error(buf);
     }
 
-    if(config->playlist_log) {
-        snprintf(fn_playlist, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->playlist_log);
+    if(config->playlist_log.name) {
+        snprintf(fn_playlist, FILENAME_MAX, "%s%s%s", config->log_dir, PATH_SEPARATOR, config->playlist_log.name);
         playlistlog = log_open(fn_playlist);
         if (playlistlog < 0) {
             buf[sizeof(buf)-1] = 0;
@@ -262,19 +262,19 @@
             _fatal_error(buf);
         }
         log_to_stderr = 0;
-        if (config->logsize)
-            log_set_trigger (playlistlog, config->logsize);
-        log_set_archive_timestamp(playlistlog, config->logarchive);
+        if (config->playlist_log.trigger_size)
+            log_set_trigger (playlistlog, config->playlist_log.trigger_size);
+        log_set_archive_timestamp(playlistlog, config->playlist_log.archive);
     } else {
         playlistlog = -1;
     }
 
-    log_set_level(errorlog, config->loglevel);
+    log_set_level(errorlog, config->error_log.level);
     log_set_level(accesslog, 4);
     log_set_level(playlistlog, 4);
-    log_set_lines_kept (errorlog, config->error_log_lines);
-    log_set_lines_kept (accesslog, config->access_log_lines);
-    log_set_lines_kept (playlistlog, config->playlist_log_lines);
+    log_set_lines_kept (errorlog, config->error_log.display);
+    log_set_lines_kept (accesslog, config->access_log.display);
+    log_set_lines_kept (playlistlog, config->playlist_log.display);
 
     if (errorlog >= 0 && accesslog >= 0) return 1;
     

Modified: icecast/branches/kh/icecast/src/source.h
===================================================================
--- icecast/branches/kh/icecast/src/source.h	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/src/source.h	2008-10-29 02:57:06 UTC (rev 15463)
@@ -59,6 +59,7 @@
 
     int yp_public;
     int shoutcast_compat;
+    int log_id;
 
     /* per source burst handling for connecting clients */
     unsigned int burst_size;    /* trigger level for burst on connect */

Modified: icecast/branches/kh/icecast/src/stats.c
===================================================================
--- icecast/branches/kh/icecast/src/stats.c	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/src/stats.c	2008-10-29 02:57:06 UTC (rev 15463)
@@ -914,7 +914,7 @@
     char *xslpath = util_get_path_from_normalised_uri (uri);
     const char *mount = httpp_get_query_param (client->parser, "mount");
 
-    stats_get_xml(&doc, STATS_PUBLIC, mount);
+    doc = stats_get_xml (STATS_PUBLIC, mount);
 
     xslt_transform(doc, xslpath, client);
 
@@ -922,18 +922,19 @@
     free (xslpath);
 }
 
-void stats_get_xml(xmlDocPtr *doc, int hidden, const char *show_mount)
+xmlDocPtr stats_get_xml (int hidden, const char *show_mount)
 {
+    xmlDocPtr doc;
     xmlNodePtr node;
 
-    *doc = xmlNewDoc (XMLSTR("1.0"));
-    node = xmlNewDocNode (*doc, NULL, XMLSTR("icestats"), NULL);
-    xmlDocSetRootElement(*doc, node);
+    doc = xmlNewDoc (XMLSTR("1.0"));
+    node = xmlNewDocNode (doc, NULL, XMLSTR("icestats"), NULL);
+    xmlDocSetRootElement(doc, node);
 
     node = _dump_stats_to_doc (node, show_mount, hidden);
 
     if (show_mount && node)
-	{
+    {
 		source_t *source;
         /* show each listener */
         avl_tree_rlock (global.source_tree);
@@ -944,6 +945,7 @@
 
         avl_tree_unlock (global.source_tree);
     }
+    return doc;
 }
 
 static int _compare_stats(void *arg, void *a, void *b)
@@ -1008,7 +1010,7 @@
         int ret;
         stats_source_t *source = (stats_source_t *)node->key;
 
-        if (source->hidden == 0)
+        if (source->hidden & STATS_SLAVE)
         {
             if (remaining <= strlen (source->source) + prelen + 3)
             {

Modified: icecast/branches/kh/icecast/src/stats.h
===================================================================
--- icecast/branches/kh/icecast/src/stats.h	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/src/stats.h	2008-10-29 02:57:06 UTC (rev 15463)
@@ -53,7 +53,7 @@
 
 void stats_transform_xslt(client_t *client, const char *uri);
 void stats_sendxml(client_t *client);
-void stats_get_xml(xmlDocPtr *doc, int show_hidden, const char *show_mount);
+xmlDocPtr stats_get_xml(int show_hidden, const char *show_mount);
 char *stats_get_value(const char *source, const char *name);
 
 #endif  /* __STATS_H__ */

Modified: icecast/branches/kh/icecast/win32/Icecast2winDlg.cpp
===================================================================
--- icecast/branches/kh/icecast/win32/Icecast2winDlg.cpp	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/win32/Icecast2winDlg.cpp	2008-10-29 02:57:06 UTC (rev 15463)
@@ -545,7 +545,7 @@
 
 			xmlDocPtr doc;
 
-			stats_get_xml(&doc, 0, NULL);
+			doc = stats_get_xml(0, NULL);
 			xmlNodePtr cur;
 		    cur = xmlDocGetRootElement(doc); 
 

Modified: icecast/branches/kh/icecast/win32/icecast2.iss
===================================================================
--- icecast/branches/kh/icecast/win32/icecast2.iss	2008-10-29 02:47:41 UTC (rev 15462)
+++ icecast/branches/kh/icecast/win32/icecast2.iss	2008-10-29 02:57:06 UTC (rev 15463)
@@ -3,7 +3,7 @@
 
 [Setup]
 AppName=Icecast2-KH
-AppVerName=Icecast v2.3.2-kh2
+AppVerName=Icecast v2.3.2-kh3
 AppPublisherURL=http://www.icecast.org
 AppSupportURL=http://www.icecast.org
 AppUpdatesURL=http://www.icecast.org
@@ -13,7 +13,7 @@
 LicenseFile=..\COPYING
 InfoAfterFile=..\README
 OutputDir=.
-OutputBaseFilename=icecast2_win32_v2.3.2-kh2_setup
+OutputBaseFilename=icecast2_win32_v2.3.2-kh3_setup
 WizardImageFile=icecast2logo2.bmp
 WizardImageStretch=no
 ; uncomment the following line if you want your installation to run on NT 3.51 too.



More information about the commits mailing list