aboutsummaryrefslogtreecommitdiffstats
path: root/src/db
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-01-18 16:13:33 +0100
committerMax Kellermann <max@duempel.org>2014-01-18 16:13:33 +0100
commit0c2485e86c280c69752a8fa6101e8d77ee4b9b25 (patch)
tree309e0f3649518c087ff35c233ec1db3d71d9e5e7 /src/db
parent7d696a7063c7510485f2fbf315731212d28e49e0 (diff)
downloadmpd-0c2485e86c280c69752a8fa6101e8d77ee4b9b25.tar.gz
mpd-0c2485e86c280c69752a8fa6101e8d77ee4b9b25.tar.xz
mpd-0c2485e86c280c69752a8fa6101e8d77ee4b9b25.zip
db/upnp: use getServer() in Visit()
Reduce bloat.
Diffstat (limited to 'src/db')
-rw-r--r--src/db/UpnpDatabasePlugin.cxx26
1 files changed, 9 insertions, 17 deletions
diff --git a/src/db/UpnpDatabasePlugin.cxx b/src/db/UpnpDatabasePlugin.cxx
index 98c8a5ff3..8d107a74e 100644
--- a/src/db/UpnpDatabasePlugin.cxx
+++ b/src/db/UpnpDatabasePlugin.cxx
@@ -678,12 +678,12 @@ UpnpDatabase::Visit(const DatabaseSelection &selection,
VisitPlaylist visit_playlist,
Error &error) const
{
- std::vector<ContentDirectoryService> servers;
- if (!m_superdir->getDirServices(servers, error))
- return false;
-
auto vpath = stringToTokens(selection.uri, "/", true);
if (vpath.empty()) {
+ std::vector<ContentDirectoryService> servers;
+ if (!m_superdir->getDirServices(servers, error))
+ return false;
+
if (!selection.recursive) {
// If the path is empty and recursive is not set, synthetize a
// pseudo-directory from the list of servers.
@@ -709,19 +709,11 @@ UpnpDatabase::Visit(const DatabaseSelection &selection,
std::string servername(vpath[0]);
vpath.erase(vpath.begin());
- ContentDirectoryService *server = 0;
- for (auto& dir : servers) {
- if (!servername.compare(dir.getFriendlyName())) {
- server = &dir;
- break;
- }
- }
- if (server == 0) {
- FormatDebug(db_domain, "UpnpDatabase::Visit: server %s not found\n",
- vpath[0].c_str());
- return true;
- }
- return VisitServer(*server, vpath, selection,
+ ContentDirectoryService server;
+ if (!m_superdir->getServer(servername.c_str(), server, error))
+ return false;
+
+ return VisitServer(server, vpath, selection,
visit_directory, visit_song, visit_playlist, error);
}