diff options
Diffstat (limited to '')
-rw-r--r-- | src/db/UpnpDatabasePlugin.cxx | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/db/UpnpDatabasePlugin.cxx b/src/db/UpnpDatabasePlugin.cxx index 7b2f4996b..cd3b8afbd 100644 --- a/src/db/UpnpDatabasePlugin.cxx +++ b/src/db/UpnpDatabasePlugin.cxx @@ -130,7 +130,7 @@ private: bool Namei(ContentDirectoryService &server, const std::vector<std::string> &vpath, - std::string &oobjid, UPnPDirObject &dirent, + UPnPDirObject &dirent, Error &error) const; /** @@ -232,8 +232,7 @@ UpnpDatabase::GetSong(const char *uri, Error &error) const vpath.erase(vpath.begin()); UPnPDirObject dirent; if (vpath.front() != rootid) { - std::string objid; - if (!Namei(server, vpath, objid, dirent, error)) + if (!Namei(server, vpath, dirent, error)) return nullptr; } else { if (!ReadNode(server, vpath.back().c_str(), dirent, @@ -465,10 +464,9 @@ UpnpDatabase::BuildPath(ContentDirectoryService &server, bool UpnpDatabase::Namei(ContentDirectoryService &server, const std::vector<std::string> &vpath, - std::string &oobjid, UPnPDirObject &odirent, + UPnPDirObject &odirent, Error &error) const { - oobjid.clear(); std::string objid(rootid); if (vpath.empty()) { @@ -476,7 +474,6 @@ UpnpDatabase::Namei(ContentDirectoryService &server, if (!ReadNode(server, rootid, odirent, error)) return false; - oobjid = rootid; return true; } @@ -503,7 +500,6 @@ UpnpDatabase::Namei(ContentDirectoryService &server, if (i == vpath.size() - 1) { // The last element in the path was found and it's // a container, we're done - oobjid = objid; odirent = std::move(*child); return true; } @@ -513,7 +509,6 @@ UpnpDatabase::Namei(ContentDirectoryService &server, // If this is the last path elt, we found the target, // else it does not exist if (i == vpath.size() - 1) { - oobjid = objid; odirent = std::move(*child); return true; } else { @@ -565,9 +560,8 @@ UpnpDatabase::VisitServer(ContentDirectoryService &server, } // Translate the target path into an object id and the associated metadata. - std::string objid; UPnPDirObject tdirent; - if (!Namei(server, vpath, objid, tdirent, error)) + if (!Namei(server, vpath, tdirent, error)) return false; /* If recursive is set, this is a search... No use sending it @@ -575,7 +569,7 @@ UpnpDatabase::VisitServer(ContentDirectoryService &server, recursion (1-deep) here, which will handle the "add dir" case. */ if (selection.recursive && selection.filter) - return SearchSongs(server, objid.c_str(), selection, + return SearchSongs(server, tdirent.m_id.c_str(), selection, visit_song, error); if (tdirent.type == UPnPDirObject::Type::ITEM) { @@ -610,7 +604,8 @@ UpnpDatabase::VisitServer(ContentDirectoryService &server, and loop here, but it's not useful as mpd will only return data to the client when we're done anyway. */ UPnPDirContent dirbuf; - if (!server.readDir(m_lib->getclh(), objid.c_str(), dirbuf, error)) + if (!server.readDir(m_lib->getclh(), tdirent.m_id.c_str(), dirbuf, + error)) return false; for (auto &dirent : dirbuf.objects) { |