Fix Mdns code

This commit is contained in:
LordGrey
2023-12-29 18:08:15 +01:00
parent 6aacac7924
commit e71185acd9
3 changed files with 13 additions and 5 deletions

View File

@@ -109,6 +109,7 @@ private:
QMdnsEngine::Server _server; QMdnsEngine::Server _server;
QMdnsEngine::Cache _cache; QMdnsEngine::Cache _cache;
QMdnsEngine::Resolver* _resolver;
QMap<QByteArray, QMdnsEngine::Browser*> _browsedServiceTypes; QMap<QByteArray, QMdnsEngine::Browser*> _browsedServiceTypes;
}; };

View File

@@ -31,6 +31,10 @@ MdnsBrowser::MdnsBrowser(QObject* parent)
MdnsBrowser::~MdnsBrowser() MdnsBrowser::~MdnsBrowser()
{ {
qDeleteAll(_browsedServiceTypes); qDeleteAll(_browsedServiceTypes);
_browsedServiceTypes.clear();
disconnect(_resolver, &QMdnsEngine::Resolver::resolved, this, &MdnsBrowser::onHostNameResolved);
delete _resolver;
} }
void MdnsBrowser::browseForServiceType(const QByteArray& serviceType) 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()); DebugIf(verboseBrowser, _log, "IP-address for hostname [%s] not yet in cache, start resolver.", toBeResolvedHostName.constData());
qRegisterMetaType<QMdnsEngine::Message>("Message"); qRegisterMetaType<QMdnsEngine::Message>("Message");
auto* resolver = new QMdnsEngine::Resolver(&_server, toBeResolvedHostName, &_cache); _resolver = new QMdnsEngine::Resolver(&_server, toBeResolvedHostName, &_cache);
connect(resolver, &QMdnsEngine::Resolver::resolved, this, &MdnsBrowser::onHostNameResolved); connect(_resolver, &QMdnsEngine::Resolver::resolved, this, &MdnsBrowser::onHostNameResolved);
} }
} }
} }

View File

@@ -33,10 +33,13 @@ void MdnsProvider::init()
MdnsProvider::~MdnsProvider() MdnsProvider::~MdnsProvider()
{ {
qDeleteAll(_providedServiceTypes); disconnect(_hostname, &QMdnsEngine::Hostname::hostnameChanged, this, &MdnsProvider::onHostnameChanged);
_hostname->deleteLater(); qDeleteAll(_providedServiceTypes);
_server->deleteLater(); _providedServiceTypes.clear();
delete _hostname;
delete _server;
} }
void MdnsProvider::publishService(const QString& serviceType, quint16 servicePort, const QByteArray& serviceName) void MdnsProvider::publishService(const QString& serviceType, quint16 servicePort, const QByteArray& serviceName)