--- a/src/mediaserver/contentdirectory.cxx
+++ b/src/mediaserver/contentdirectory.cxx
@@ -54,7 +54,7 @@
// Start plugins which have long init so that the user has less to
// wait on first access
- void maybeStartSomePlugins();
+ void maybeStartSomePlugins(bool enabled);
CDPlugin *pluginFactory(const string& appname) {
LOGDEB("ContentDirectory::pluginFactory: for " << appname << endl);
@@ -100,7 +100,7 @@
static const string
sIdContentDirectory("urn:upnp-org:serviceId:ContentDirectory");
-ContentDirectory::ContentDirectory(MediaServer *dev)
+ContentDirectory::ContentDirectory(MediaServer *dev, bool enabled)
: UpnpService(sTpContentDirectory, sIdContentDirectory, dev),
m(new Internal(this, dev))
{
@@ -119,7 +119,7 @@
dev->addActionMapping(
this, "Search",
bind(&ContentDirectory::actSearch, this, _1, _2));
- m->maybeStartSomePlugins();
+ m->maybeStartSomePlugins(enabled);
}
ContentDirectory::~ContentDirectory()
@@ -251,8 +251,15 @@
}
-void ContentDirectory::Internal::maybeStartSomePlugins()
-{
+void ContentDirectory::Internal::maybeStartSomePlugins(bool enabled)
+{
+ // If enabled is not set, no service is locally enabled, we are
+ // working for ohcredentials. Explicitely start the microhttpd
+ // daemon in this case, as we'll need it before any plugin is
+ // created.
+ if (!enabled) {
+ PlgWithSlave::maybeStartMHD(this->service);
+ }
for (auto& entry : rootdir) {
string app = appForId(entry.id);
string sas;
@@ -529,8 +536,12 @@
dir->addVDir(path, ops);
return true;
}
-
-bool ContentDirectory::config_get(const string& nm, string& val)
+std::string ContentDirectory::getfname()
+{
+ return m->msdev->getfname();
+}
+
+bool CDPluginServices::config_get(const string& nm, string& val)
{
if (nullptr == g_config) {
return false;
@@ -538,8 +549,14 @@
return g_config->get(nm, val);
}
-std::string ContentDirectory::getfname()
-{
- return m->msdev->getfname();
-}
-
+int CDPluginServices::microhttpport()
+{
+ int port = 49149;
+ string sport;
+ if (g_config->get("plgmicrohttpport", sport)) {
+ port = atoi(sport.c_str());
+ }
+ return port;
+}
+
+