@@ -287,13 +287,17 @@ class ThingDiscovery extends Stream<ThingDescription>
287287 const defaultType = 'Thing' ;
288288
289289 for (final ptrRecord in ptrRecords ?? < RRecord > []) {
290- final srvRecords =
291- await DnsUtils .lookupRecord (ptrRecord.name, RRecordType .SRV );
290+ final srvRecords = await DnsUtils .lookupRecord (
291+ ptrRecord.name,
292+ RRecordType .SRV ,
293+ provider: DnsApiProvider .CLOUDFLARE ,
294+ );
292295
293296 for (final srvRecord in srvRecords ?? < RRecord > []) {
297+ final serviceName = srvRecord.name;
294298 final srvRecordEntries = srvRecord.data.split (' ' );
295299
296- final validSrvRecord = srvRecordEntries.length == 7 ;
300+ final validSrvRecord = srvRecordEntries.length == 4 ;
297301
298302 if (! validSrvRecord) {
299303 continue ;
@@ -307,15 +311,20 @@ class ThingDiscovery extends Stream<ThingDescription>
307311 continue ;
308312 }
309313
310- final txtRecords =
311- await DnsUtils .lookupRecord (srvRecord.name, RRecordType .TXT ) ?? [];
314+ final txtRecords = await DnsUtils .lookupRecord (
315+ serviceName,
316+ RRecordType .TXT ,
317+ provider: DnsApiProvider .CLOUDFLARE ,
318+ ) ??
319+ [];
312320
313321 final txtRecord = txtRecords.firstOrNull;
314322
315323 if (txtRecord == null ) {
316324 continue ;
317325 }
318326
327+ // FIXME: Add parsing of multiple TXT records
319328 final parsedTxtRecord = _parseTxtRecords (txtRecord.data);
320329
321330 final uri = Uri (
@@ -325,15 +334,14 @@ class ThingDiscovery extends Stream<ThingDescription>
325334 scheme: parsedTxtRecord['scheme' ] ?? defaultScheme,
326335 );
327336
328- final duplicate = discoveredUris.add (uri);
337+ final duplicate = ! discoveredUris.add (uri);
329338
330339 if (duplicate) {
331340 continue ;
332341 }
333342
334343 final type = parsedTxtRecord['type' ] ?? defaultType;
335344
336- print (parsedTxtRecord);
337345 switch (type) {
338346 case 'Thing' :
339347 yield * _discoverDirectly (uri);
0 commit comments