From d346cd78a708a1e85c8af4027ad4a32ad9b54652 Mon Sep 17 00:00:00 2001 From: Jonathan Bagg Date: Mon, 6 Jul 2020 22:05:29 -0400 Subject: [PATCH] Bonjour - Fix memory leak and service rediscovery The QSocketNotifiers for the resolver and address were not being deleted in cleanUp(). This would cause a memory leak and also prevent a service from being rediscovered after removed and added back on another device. I suspect the undeleted QSocketNotifier was holding a file descriptor open which would break things. Should fix issue #27 Power-Cycling Bonjour Devices Can Cause Permanent Loss https://github.com/jbagg/QtZeroConf/issues/27 and pull request #34 macOS: Fixed undetected service stop/start while the application is running https://github.com/jbagg/QtZeroConf/pull/34 --- bonjour.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bonjour.cpp b/bonjour.cpp index f26aaee..6db7a5c 100644 --- a/bonjour.cpp +++ b/bonjour.cpp @@ -47,6 +47,8 @@ void Resolver::cleanUp() { DNSServiceRefDeallocate(DNSresolverRef); DNSServiceRefDeallocate(DNSaddressRef); + delete resolverNotifier; + delete addressNotifier; QString key = zcs->name() + QString::number(zcs->interfaceIndex()); ref->resolvers.remove(key); delete this;