diff --git a/include/mdns/MdnsBrowser.h b/include/mdns/MdnsBrowser.h index 7ee8009f..16376ddc 100644 --- a/include/mdns/MdnsBrowser.h +++ b/include/mdns/MdnsBrowser.h @@ -109,6 +109,7 @@ private: QMdnsEngine::Server _server; QMdnsEngine::Cache _cache; + QMdnsEngine::Resolver* _resolver; QMap _browsedServiceTypes; }; diff --git a/libsrc/mdns/MdnsBrowser.cpp b/libsrc/mdns/MdnsBrowser.cpp index f4f63500..dab5092a 100644 --- a/libsrc/mdns/MdnsBrowser.cpp +++ b/libsrc/mdns/MdnsBrowser.cpp @@ -31,6 +31,10 @@ MdnsBrowser::MdnsBrowser(QObject* parent) MdnsBrowser::~MdnsBrowser() { qDeleteAll(_browsedServiceTypes); + _browsedServiceTypes.clear(); + + disconnect(_resolver, &QMdnsEngine::Resolver::resolved, this, &MdnsBrowser::onHostNameResolved); + delete _resolver; } void MdnsBrowser::browseForServiceType(const QByteArray& serviceType) @@ -124,8 +128,8 @@ QHostAddress MdnsBrowser::getHostFirstAddress(const QByteArray& hostname) { DebugIf(verboseBrowser, _log, "IP-address for hostname [%s] not yet in cache, start resolver.", toBeResolvedHostName.constData()); qRegisterMetaType("Message"); - auto* resolver = new QMdnsEngine::Resolver(&_server, toBeResolvedHostName, &_cache); - connect(resolver, &QMdnsEngine::Resolver::resolved, this, &MdnsBrowser::onHostNameResolved); + _resolver = new QMdnsEngine::Resolver(&_server, toBeResolvedHostName, &_cache); + connect(_resolver, &QMdnsEngine::Resolver::resolved, this, &MdnsBrowser::onHostNameResolved); } } } diff --git a/libsrc/mdns/MdnsProvider.cpp b/libsrc/mdns/MdnsProvider.cpp index 40e17c7b..953d3b60 100644 --- a/libsrc/mdns/MdnsProvider.cpp +++ b/libsrc/mdns/MdnsProvider.cpp @@ -33,10 +33,13 @@ void MdnsProvider::init() MdnsProvider::~MdnsProvider() { - qDeleteAll(_providedServiceTypes); + disconnect(_hostname, &QMdnsEngine::Hostname::hostnameChanged, this, &MdnsProvider::onHostnameChanged); - _hostname->deleteLater(); - _server->deleteLater(); + qDeleteAll(_providedServiceTypes); + _providedServiceTypes.clear(); + + delete _hostname; + delete _server; } void MdnsProvider::publishService(const QString& serviceType, quint16 servicePort, const QByteArray& serviceName)