From 130a7202aeb06888d28f820645914fef897602af Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 25 Mar 2020 13:44:16 +0100 Subject: [PATCH] Properly use the lookup id --- dynatrace/integrationplugindynatrace.cpp | 11 ++++++----- dynatrace/integrationplugindynatrace.h | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/dynatrace/integrationplugindynatrace.cpp b/dynatrace/integrationplugindynatrace.cpp index e071caa2..da646363 100644 --- a/dynatrace/integrationplugindynatrace.cpp +++ b/dynatrace/integrationplugindynatrace.cpp @@ -44,22 +44,23 @@ IntegrationPluginDynatrace::IntegrationPluginDynatrace() void IntegrationPluginDynatrace::discoverThings(ThingDiscoveryInfo *info) { - m_asyncDiscoveries.append(info); - // NOTE: QHostInfo::lookupHost will call in from another thread using the Funtor syntax! // https://bugreports.qt.io/browse/QTBUG-83073 // Using the old school syntax... - QHostInfo::lookupHost("ufo.home", this, SLOT(resolveIds(const QHostInfo &))); + int id = QHostInfo::lookupHost("ufo.home", this, SLOT(resolveIds(const QHostInfo &))); + m_asyncDiscoveries.insert(id, info); } void IntegrationPluginDynatrace::resolveIds(const QHostInfo &host) { - if (m_asyncDiscoveries.isEmpty()) { + int id = host.lookupId(); + + if (!m_asyncDiscoveries.contains(id)) { qCWarning(dcDynatrace()) << "Discvery result came in but request has vanished..."; return; } - ThingDiscoveryInfo *info = m_asyncDiscoveries.takeFirst(); + ThingDiscoveryInfo *info = m_asyncDiscoveries.take(id); if (host.error() != QHostInfo::NoError) { qCDebug(dcDynatrace()) << "Lookup failed:" << host.errorString(); info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("An error happened discovering the UFO in the network.")); diff --git a/dynatrace/integrationplugindynatrace.h b/dynatrace/integrationplugindynatrace.h index fae00132..cc7494be 100644 --- a/dynatrace/integrationplugindynatrace.h +++ b/dynatrace/integrationplugindynatrace.h @@ -65,7 +65,7 @@ private: QHash m_ufoConnections; QHash m_asyncActions; QHash m_asyncSetup; - QList m_asyncDiscoveries; + QHash m_asyncDiscoveries; void getId(const QHostAddress &address); };