diff --git a/lib/src/core/thing_discovery.dart b/lib/src/core/thing_discovery.dart index 9e70a90d..4dcda9c1 100644 --- a/lib/src/core/thing_discovery.dart +++ b/lib/src/core/thing_discovery.dart @@ -287,13 +287,17 @@ class ThingDiscovery extends Stream const defaultType = 'Thing'; for (final ptrRecord in ptrRecords ?? []) { - final srvRecords = - await DnsUtils.lookupRecord(ptrRecord.name, RRecordType.SRV); + final srvRecords = await DnsUtils.lookupRecord( + ptrRecord.name, + RRecordType.SRV, + provider: DnsApiProvider.CLOUDFLARE, + ); for (final srvRecord in srvRecords ?? []) { + final serviceName = srvRecord.name; final srvRecordEntries = srvRecord.data.split(' '); - final validSrvRecord = srvRecordEntries.length == 7; + final validSrvRecord = srvRecordEntries.length == 4; if (!validSrvRecord) { continue; @@ -307,8 +311,12 @@ class ThingDiscovery extends Stream continue; } - final txtRecords = - await DnsUtils.lookupRecord(srvRecord.name, RRecordType.TXT) ?? []; + final txtRecords = await DnsUtils.lookupRecord( + serviceName, + RRecordType.TXT, + provider: DnsApiProvider.CLOUDFLARE, + ) ?? + []; final txtRecord = txtRecords.firstOrNull; @@ -316,6 +324,7 @@ class ThingDiscovery extends Stream continue; } + // FIXME: Add parsing of multiple TXT records final parsedTxtRecord = _parseTxtRecords(txtRecord.data); final uri = Uri( @@ -325,7 +334,7 @@ class ThingDiscovery extends Stream scheme: parsedTxtRecord['scheme'] ?? defaultScheme, ); - final duplicate = discoveredUris.add(uri); + final duplicate = !discoveredUris.add(uri); if (duplicate) { continue; @@ -333,7 +342,6 @@ class ThingDiscovery extends Stream final type = parsedTxtRecord['type'] ?? defaultType; - print(parsedTxtRecord); switch (type) { case 'Thing': yield* _discoverDirectly(uri);