aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-01-11 01:40:21 +0100
committerMax Kellermann <max@duempel.org>2014-01-11 01:40:21 +0100
commit65ebfb16c90f7c0921983009775b1a2414371d94 (patch)
tree96b12456848e6a6e925d725f8169596a1a656c6f /src
parent44a65fc5de15e793cdf261081481c3a357652fe6 (diff)
downloadmpd-65ebfb16c90f7c0921983009775b1a2414371d94.tar.gz
mpd-65ebfb16c90f7c0921983009775b1a2414371d94.tar.xz
mpd-65ebfb16c90f7c0921983009775b1a2414371d94.zip
db/upnp/Directory: parse item_class in StartElement
Don't add to the std::map.
Diffstat (limited to 'src')
-rw-r--r--src/db/upnp/Directory.cxx20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/db/upnp/Directory.cxx b/src/db/upnp/Directory.cxx
index ecb11ab45..a42719e4d 100644
--- a/src/db/upnp/Directory.cxx
+++ b/src/db/upnp/Directory.cxx
@@ -32,7 +32,6 @@ static const char *const upnptags[] = {
"upnp:album",
"upnp:genre",
"upnp:originalTrackNumber",
- "upnp:class",
nullptr,
};
@@ -105,6 +104,12 @@ protected:
const char *pid = GetAttribute(attrs, "parentID");
if (pid != nullptr)
m_tobj.m_pid = pid;
+
+ const char *item_class_name =
+ GetAttribute(attrs, "upnp:class");
+ if (item_class_name != nullptr)
+ m_tobj.item_class =
+ ParseItemClass(item_class_name);
}
break;
@@ -126,19 +131,10 @@ protected:
bool checkobjok() {
if (m_tobj.m_id.empty() || m_tobj.m_pid.empty() ||
- m_tobj.m_title.empty())
+ m_tobj.m_title.empty() ||
+ m_tobj.item_class == UPnPDirObject::ItemClass::UNKNOWN)
return false;
- if (m_tobj.type == UPnPDirObject::Type::ITEM) {
- const char *item_class_name =
- m_tobj.m_props["upnp:class"].c_str();
- auto item_class = ParseItemClass(item_class_name);
- if (item_class == UPnPDirObject::ItemClass::UNKNOWN)
- return false;
-
- m_tobj.item_class = item_class;
- }
-
return true;
}