From 20e2c308264b8b425381f201294f5421afbfe8f9 Mon Sep 17 00:00:00 2001 From: uncor3 Date: Fri, 10 Apr 2026 10:20:24 +0300 Subject: [PATCH] fix dnssd --- src/core/services/dnssd/dnssd_service.cpp | 18 ++++++++++++------ src/core/services/dnssd/dnssd_service.h | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/core/services/dnssd/dnssd_service.cpp b/src/core/services/dnssd/dnssd_service.cpp index b3e0b7e..0a5c6e2 100644 --- a/src/core/services/dnssd/dnssd_service.cpp +++ b/src/core/services/dnssd/dnssd_service.cpp @@ -83,12 +83,19 @@ void DnssdService::stopBrowsing() m_pendingDevices.clear(); } -QList DnssdService::getNetworkDevices() const +QMap DnssdService::getNetworkDevices() const { QMutexLocker locker(&m_devicesMutex); return m_networkDevices; } +NetworkDevice +DnssdService::getNetworkDeviceByMac(const QString &macAddress) const +{ + QMutexLocker locker(&m_devicesMutex); + return m_networkDevices.value(macAddress, NetworkDevice()); +} + void DnssdService::processDnssdEvents() { if (m_browseRef && m_running) { @@ -272,14 +279,13 @@ void DNSSD_API DnssdService::addrInfoCallback( friendlyName.left(friendlyName.length() - 7); // Remove ".local." } - QString deviceName; // Try to get device name from TXT records first if (pending.txt.contains("DvNm")) { deviceName = pending.txt["DvNm"]; - qDebug() << "Device name from DvNm TXT record:" << device.name; + qDebug() << "Device name from DvNm TXT record:" << deviceName; } else if (pending.txt.contains("Name")) { deviceName = pending.txt["Name"]; - qDebug() << "Device name from Name TXT record:" << device.name; + qDebug() << "Device name from Name TXT record:" << deviceName; } else { qDebug() << "Using hostname as device name:" << friendlyName; deviceName = friendlyName; @@ -295,9 +301,9 @@ void DNSSD_API DnssdService::addrInfoCallback( // Add to our list if not already present { QMutexLocker locker(&service->m_devicesMutex); - bool exists = m_networkDevices.contains(pending.macAddress); + bool exists = service->m_networkDevices.contains(pending.macAddress); if (!exists) { - service->m_networkDevices.append(device); + service->m_networkDevices[device.macAddress] = device; emit service->deviceAdded(device); } } diff --git a/src/core/services/dnssd/dnssd_service.h b/src/core/services/dnssd/dnssd_service.h index 7027b5d..dc9f336 100644 --- a/src/core/services/dnssd/dnssd_service.h +++ b/src/core/services/dnssd/dnssd_service.h @@ -79,7 +79,7 @@ private: QSocketNotifier *m_socketNotifier; mutable QMutex m_devicesMutex; - QList m_networkDevices; + QMap m_networkDevices; bool m_running; // Temporary storage for devices being resolved