mirror of
https://gitlab.xiph.org/xiph/icecast-server.git
synced 2025-02-02 15:07:36 -05:00
Don't hardcode content type of xslt files to html, allow xsl to determine it
svn path=/icecast/trunk/icecast/; revision=13534
This commit is contained in:
parent
b3b2695a1d
commit
2a0c3cdefa
@ -1,5 +1,5 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/iceresponse" >
|
||||
<html>
|
||||
<head>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
|
||||
<xsl:output omit-xml-declaration="no" method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
|
||||
<xsl:template match = "/icestats" >
|
||||
<html>
|
||||
<head>
|
||||
|
34
src/xslt.c
34
src/xslt.c
@ -189,6 +189,7 @@ void xslt_transform(xmlDocPtr doc, const char *xslfilename, client_t *client)
|
||||
xsltStylesheetPtr cur;
|
||||
xmlChar *string;
|
||||
int len, problem = 0;
|
||||
const char *mediatype = NULL;
|
||||
|
||||
xmlSetGenericErrorFunc ("", log_parse_failure);
|
||||
xsltSetGenericErrorFunc ("", log_parse_failure);
|
||||
@ -208,19 +209,37 @@ void xslt_transform(xmlDocPtr doc, const char *xslfilename, client_t *client)
|
||||
|
||||
if (xsltSaveResultToString (&string, &len, res, cur) < 0)
|
||||
problem = 1;
|
||||
thread_mutex_unlock(&xsltlock);
|
||||
|
||||
/* lets find out the content type to use */
|
||||
if (cur->mediaType)
|
||||
mediatype = (char *)cur->mediaType;
|
||||
else
|
||||
{
|
||||
/* check method for the default, a missing method assumes xml */
|
||||
if (cur->method && xmlStrcmp (cur->method, "html") == 0)
|
||||
mediatype = "text/html";
|
||||
else
|
||||
if (cur->method && xmlStrcmp (cur->method, "text") == 0)
|
||||
mediatype = "text/plain";
|
||||
else
|
||||
mediatype = "text/xml";
|
||||
}
|
||||
if (problem == 0)
|
||||
{
|
||||
const char *http = "HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nContent-Length: ";
|
||||
int buf_len = strlen (http) + 20 + len;
|
||||
/* the 100 is to allow for the hardcoded headers */
|
||||
unsigned int full_len = strlen (mediatype) + len + 100;
|
||||
refbuf_t *refbuf = refbuf_new (full_len);
|
||||
|
||||
if (string == NULL)
|
||||
string = xmlStrdup ("");
|
||||
string = xmlCharStrdup ("");
|
||||
snprintf (refbuf->data, full_len,
|
||||
"HTTP/1.0 200 OK\r\nContent-Type: %s\r\nContent-Length: %d\r\n\r\n%s",
|
||||
mediatype, len, string);
|
||||
|
||||
client->respcode = 200;
|
||||
client_set_queue (client, NULL);
|
||||
client->refbuf = refbuf_new (buf_len);
|
||||
len = snprintf (client->refbuf->data, buf_len, "%s%d\r\n\r\n%s", http, len, string);
|
||||
client->refbuf->len = len;
|
||||
client->refbuf = refbuf;
|
||||
refbuf->len = strlen (refbuf->data);
|
||||
fserve_add_client (client, NULL);
|
||||
xmlFree (string);
|
||||
}
|
||||
@ -229,6 +248,7 @@ void xslt_transform(xmlDocPtr doc, const char *xslfilename, client_t *client)
|
||||
WARN1 ("problem applying stylesheet \"%s\"", xslfilename);
|
||||
client_send_404 (client, "XSLT problem");
|
||||
}
|
||||
thread_mutex_unlock (&xsltlock);
|
||||
xmlFreeDoc(res);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user