From 00789de7d42429f0fdd8f5282d54ec5e41d567d6 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 6 Jul 2020 21:35:31 +0200 Subject: [PATCH] db/upnp/Object: root nodes are allowed to omit parent_id and name This fixes compatibility with Plex DLNA. Closes https://github.com/MusicPlayerDaemon/MPD/issues/851 --- NEWS | 1 + src/db/plugins/upnp/Object.hxx | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 054059bfb..258723782 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ ver 0.21.25 (not yet released) - fix crash when using "rangeid" while playing * database - simple: automatically scan new mounts + - upnp: fix compatibility with Plex DLNA * storage - fix disappearing mounts after mounting twice - udisks: fix reading ".mpdignore" diff --git a/src/db/plugins/upnp/Object.hxx b/src/db/plugins/upnp/Object.hxx index e17cdfbdd..e27fcfc2d 100644 --- a/src/db/plugins/upnp/Object.hxx +++ b/src/db/plugins/upnp/Object.hxx @@ -89,9 +89,18 @@ public: tag.Clear(); } + gcc_pure + bool IsRoot() const noexcept { + return type == Type::CONTAINER && id == "0"; + } + gcc_pure bool Check() const noexcept { - return !id.empty() && !parent_id.empty() && !name.empty() && + return !id.empty() && + /* root nodes don't need a parent id and a + name */ + (IsRoot() || (!parent_id.empty() && + !name.empty())) && (type != UPnPDirObject::Type::ITEM || item_class != UPnPDirObject::ItemClass::UNKNOWN); }