--- a/src/httpfs.cxx
+++ b/src/httpfs.cxx
@@ -26,6 +26,33 @@
using namespace std;
using namespace UPnPP;
+
+// UPnP AV services. We can disable this to help pure OpenHome
+// renderers which having both UPnP AV and OpenHome gets in trouble
+// (Kinsky)
+static string upnpAVDesc(
+ "<service>"
+ " <serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>"
+ " <serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>"
+ " <SCPDURL>/upmpd/RenderingControl.xml</SCPDURL>"
+ " <controlURL>/ctl/RenderingControl</controlURL>"
+ " <eventSubURL>/evt/RenderingControl</eventSubURL>"
+ "</service>"
+ "<service>"
+ " <serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>"
+ " <serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>"
+ " <SCPDURL>/upmpd/AVTransport.xml</SCPDURL>"
+ " <controlURL>/ctl/AVTransport</controlURL>"
+ " <eventSubURL>/evt/AVTransport</eventSubURL>"
+ "</service>"
+ "<service>"
+ " <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>"
+ " <serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>"
+ " <SCPDURL>/upmpd/ConnectionManager.xml</SCPDURL>"
+ " <controlURL>/ctl/ConnectionManager</controlURL>"
+ " <eventSubURL>/evt/ConnectionManager</eventSubURL>"
+ "</service>"
+ );
// The description XML document is the first thing downloaded by
// clients and tells them what services we export, and where to find
@@ -154,10 +181,10 @@
bool initHttpFs(unordered_map<string, VDirContent>& files,
const string& datadir,
const string& UUID, const string& friendlyname,
- bool openhome, const string& iconpath,
- const string& presentationhtml)
-{
- if (openhome) {
+ bool enableAV, bool enableOH,
+ const string& iconpath, const string& presentationhtml)
+{
+ if (enableOH) {
if (!g_sc2mpd_path.empty()) {
ohxmlfilenames.push_back("OHReceiver.xml");
}
@@ -197,7 +224,12 @@
// Special for description: set UUID and friendlyname
data = regsub1("@UUID@", data, UUID);
data = regsub1("@FRIENDLYNAME@", data, friendlyname);
- if (openhome) {
+ if (enableAV) {
+ data = regsub1("@UPNPAV@", data, upnpAVDesc);
+ } else {
+ data = regsub1("@UPNPAV@", data, "");
+ }
+ if (enableOH) {
if (!g_sc2mpd_path.empty()) {
ohDesc += ohDescReceive;
}