@@ -275,13 +275,17 @@ class ThingDiscovery extends Stream<ThingDescription>
275275 const defaultType = "Thing" ;
276276
277277 for (final ptrRecord in ptrRecords ?? < RRecord > []) {
278- final srvRecords =
279- await DnsUtils .lookupRecord (ptrRecord.name, RRecordType .SRV );
278+ final srvRecords = await DnsUtils .lookupRecord (
279+ ptrRecord.name,
280+ RRecordType .SRV ,
281+ provider: DnsApiProvider .CLOUDFLARE ,
282+ );
280283
281284 for (final srvRecord in srvRecords ?? < RRecord > []) {
285+ final serviceName = srvRecord.name;
282286 final srvRecordEntries = srvRecord.data.split (" " );
283287
284- final validSrvRecord = srvRecordEntries.length == 7 ;
288+ final validSrvRecord = srvRecordEntries.length == 4 ;
285289
286290 if (! validSrvRecord) {
287291 continue ;
@@ -295,15 +299,20 @@ class ThingDiscovery extends Stream<ThingDescription>
295299 continue ;
296300 }
297301
298- final txtRecords =
299- await DnsUtils .lookupRecord (srvRecord.name, RRecordType .TXT ) ?? [];
302+ final txtRecords = await DnsUtils .lookupRecord (
303+ serviceName,
304+ RRecordType .TXT ,
305+ provider: DnsApiProvider .CLOUDFLARE ,
306+ ) ??
307+ [];
300308
301309 final txtRecord = txtRecords.firstOrNull;
302310
303311 if (txtRecord == null ) {
304312 continue ;
305313 }
306314
315+ // FIXME: Add parsing of multiple TXT records
307316 final parsedTxtRecord = _parseTxtRecords (txtRecord.data);
308317
309318 final uri = Uri (
@@ -313,15 +322,14 @@ class ThingDiscovery extends Stream<ThingDescription>
313322 scheme: parsedTxtRecord["scheme" ] ?? defaultScheme,
314323 );
315324
316- final duplicate = discoveredUris.add (uri);
325+ final duplicate = ! discoveredUris.add (uri);
317326
318327 if (duplicate) {
319328 continue ;
320329 }
321330
322331 final type = parsedTxtRecord["type" ] ?? defaultType;
323332
324- print (parsedTxtRecord);
325333 switch (type) {
326334 case "Thing" :
327335 yield * _discoverDirectly (uri);
0 commit comments