From 833ec3d3cdb206dc41420e067874e355569bd225 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 3 Feb 2015 23:48:11 +0100 Subject: lib/upnp/Discovery: remove locking from ExpireDevices() --- src/lib/upnp/Discovery.cxx | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'src/lib/upnp/Discovery.cxx') diff --git a/src/lib/upnp/Discovery.cxx b/src/lib/upnp/Discovery.cxx index 80157c707..f6a3ba122 100644 --- a/src/lib/upnp/Discovery.cxx +++ b/src/lib/upnp/Discovery.cxx @@ -212,7 +212,6 @@ UPnPDeviceDirectory::Invoke(Upnp_EventType et, void *evp) bool UPnPDeviceDirectory::ExpireDevices(Error &error) { - const ScopeLock protect(mutex); const unsigned now = MonotonicClockS(); bool didsomething = false; @@ -291,12 +290,11 @@ bool UPnPDeviceDirectory::GetDirectories(std::vector &out, Error &error) { - // Has locking, do it before our own lock + const ScopeLock protect(mutex); + if (!ExpireDevices(error)) return false; - const ScopeLock protect(mutex); - for (auto dit = directories.begin(); dit != directories.end(); dit++) { for (const auto &service : dit->device.services) { @@ -314,12 +312,11 @@ UPnPDeviceDirectory::GetServer(const char *friendly_name, ContentDirectoryService &server, Error &error) { - // Has locking, do it before our own lock + const ScopeLock protect(mutex); + if (!ExpireDevices(error)) return false; - const ScopeLock protect(mutex); - for (const auto &i : directories) { const auto &device = i.device; -- cgit v1.2.3