Commit 754fead1 authored by Andreas Mieke's avatar Andreas Mieke 🚂 Committed by Philipp Schafft
Browse files

Add XML validation

This commit adds a function to check the validity of the icecast.xml
configuration file. The function returns 0 if the file is valid, -1 if
there was an unknown error or error codes as defined in

* Add  the schema somewhere into the repository where it makes sense.
* Use the function to validate the configuration file and add handling
for invalid configuration files.
parent ae83ea87
......@@ -25,6 +25,7 @@
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
#include <libxml/relaxng.h>
#include "common/thread/thread.h"
#include "cfgfile.h"
......@@ -626,6 +627,27 @@ int config_initial_parse_file(const char *filename)
return config_parse_file(filename, &_current_configuration);
/* Has to be called after xmlParseFile(...) */
int config_validate(const xmlDocPtr doc)
int status;
xmlRelaxNGPtr schema;
xmlRelaxNGValidCtxtPtr validctxt;
xmlRelaxNGParserCtxtPtr rngparser;
rngparser = xmlRelaxNGNewParserCtxt("icecast.rng");
schema = xmlRelaxNGParse(rngparser);
validctxt = xmlRelaxNGNewValidCtxt(schema);
status = xmlRelaxNGValidateDoc(validctxt, doc);
return status;
int config_parse_file(const char *filename, ice_config_t *configuration)
xmlDocPtr doc;
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment